Smile (Статистический интеллект машин и обучающий механизм) - это быстрое и комплексное машинное обучение, NLP, линейная алгебра, график, интерполяция и система визуализации в Java и Scala. С помощью расширенных структур данных и алгоритмов Smile обеспечивает современную производительность. Smile хорошо задокументирована, и, пожалуйста, ознакомьтесь с веб -сайтом проекта для руководств по программированию и дополнительной информации.
Smile охватывает каждый аспект машинного обучения, включая классификацию, регрессию, кластеризацию, добычу правил ассоциации, выбор функций, обучение многообразии, многомерное масштабирование, генетические алгоритмы, вменение недостающим ценности, эффективный поиск ближнего соседа и т. Д.
Smile реализует следующие крупные алгоритмы машинного обучения:
Классификация: поддержка векторных машин, деревья решений, Adaboost, повышение градиента, случайный лес, логистическая регрессия, нейронные сети, сети RBF, максимальный энтропийный классификатор, KNN, наивный байесовский, рыбак/линейный/квадратичный/регуляризованный анализ дискриминационного анализа.
Регрессия: поддержка векторной регрессии, гауссовый процесс, деревья регрессии, повышение градиента, случайный лес, сети RBF, OLS, Lasso, Elasticnet, регрессия хребта.
Выбор функций: выбор функций на основе генетического алгоритма, выбор функций на основе обучения ансамбля, соотношение шума сигнала, соотношение квадратов SUM.
Кластеризация: береза, Кларан, DBSCAN, Denclue, детерминированный отжиг, K-средние, X-средние, G-средние, нейронные газы, растущий нейронный газ, иерархическая кластеризация, последовательная информация, узкая местность, самоорганизационные карты, спектральная кластеризация, минимальная энтропионная кластеризация.
Правило ассоциации и частые добычи элементов: алгоритм майнинга FP-роста.
Обучение многообразии: Isomap, LLE, LAPLACIAN FOLANMAP, T-SNE, UMAP, PCA, ядра PCA, вероятностная PCA, GHA, случайная проекция, ICA.
Многомерное масштабирование: классическая MDS, изотонические MDS, отображение Саммона.
Ближайший соседский поиск: Bk-Tree, Cover Tree, KD-Tree, Simhash, Lsh.
Обучение последовательности: скрытая модель Маркова, условное случайное поле.
Обработка естественного языка: сплиттер и токенизатор предложения, статистический тест Bigram, фраза -экстрактор, экстрактор ключевых слов, стеммер, теги POS, рейтинг актуальности
Вы можете использовать библиотеки через Maven Central Repository, добавив следующее в свой проект Pom.xml.
<dependency>
<groupId>com.github.haifengl</groupId>
<artifactId>smile-core</artifactId>
<version>4.0.0</version>
</dependency>
Для NLP используйте Artifactid Smile-NLP.
Для Scala API, пожалуйста, используйте
libraryDependencies += "com.github.haifengl" %% "smile-scala" % "4.0.0"
Для Kotlin API добавьте ниже раздел dependencies сценария сборки Gradle.
implementation("com.github.haifengl:smile-kotlin:4.0.0")
Для API Clojure добавьте следующую зависимость в свой проект или файл сборки:
[org.clojars.haifengl/smile "4.0.0"]
Некоторые алгоритмы полагаются на BLAS и LAPACK (например, обучение в многообразии, некоторые алгоритмы кластеризации, гауссовую регрессию процесса, MLP и т. Д.). Чтобы использовать эти алгоритмы, вы должны включить Openblas для оптимизированной матричной вычисления:
libraryDependencies ++= Seq(
"org.bytedeco" % "javacpp" % "1.5.11" classifier "macosx-arm64" classifier "macosx-x86_64" classifier "windows-x86_64" classifier "linux-x86_64",
"org.bytedeco" % "openblas" % "0.3.28-1.5.11" classifier "macosx-arm64" classifier "macosx-x86_64" classifier "windows-x86_64" classifier "linux-x86_64",
"org.bytedeco" % "arpack-ng" % "3.9.1-1.5.11" classifier "macosx-x86_64" classifier "windows-x86_64" classifier "linux-x86_64"
)
В этом примере мы включаем все поддерживаемые 64-разрядные платформы и отфильтровать 32-разрядные платформы. Пользователь должен включать только необходимые платформы для сохранения пространств.
Если вы предпочитаете другие реализации BLAS, вы можете использовать любую библиотеку, найденную на «java.library.path» или на пути класса, указав ее с помощью системы системы «org.bytedeco.openblas.load». Например, чтобы использовать библиотеку BLA из рамки Accelerate на Mac OS X, мы можем передавать такие параметры, как -Dorg.bytedeco.openblas.load=blas .
Если у вас есть установка MKL по умолчанию или просто включите следующие модули, которые включают полную версию двоичных файлов MKL, Smile автоматически переключается на MKL.
libraryDependencies ++= {
val version = "2025.0-1.5.11"
Seq(
"org.bytedeco" % "mkl-platform" % version,
"org.bytedeco" % "mkl-platform-redist" % version
)
}
Smile использует модель с двойной лицензией, предназначенную для удовлетворения потребностей в разработке и распространении как коммерческих дистрибьюторов (таких как OEM -производители, ISV и VARS), так и проектов с открытым исходным кодом. Для получения подробной информации см. Лицензию.
Улыбка идет с интерактивными раковинами для Java, Scala и Kotlin. Скачать предварительно упакованную улыбку со страницы релизов. В домашнем каталоге улыбки тип
./bin/smile
Чтобы войти в оболочку Scala. Вы можете запустить любые действительные выражения Scala в оболочке. В простейшем случае вы можете использовать его в качестве калькулятора. Кроме того, все операторы улыбки высокого уровня предопределены в оболочке. По умолчанию оболочка использует память до 75%. Если вам нужно больше памяти для обработки больших данных, используйте опцию -J-Xmx или -XX:MaxRAMPercentage . Например,
./bin/smile -J-Xmx30G
Вы также можете изменить файл конфигурации ./conf/smile.ini для памяти и других настроек JVM.
Чтобы использовать Java's Jshell, тип
./bin/jshell.sh
у которого есть банки Smile's в панели класса. Точно так же беги
./bin/kotlin.sh
Чтобы войти в Kotlin Repl.
Большинство моделей поддерживают Serializable интерфейс Java (все классификаторы поддерживают Serializable интерфейс), чтобы вы могли использовать их в Spark. Protostuff-это хорошая альтернатива, которая поддерживает совместимость с прямой обработкой (эволюция схемы) и валидацию. Помимо XML, Protostuff поддерживает многие другие форматы, такие как JSON, YAML, Protobuf и т. Д.
Smile обеспечивает библиотеку визуализации данных на основе свинга, которая обеспечивает график рассеяния, линейный график, график лестницы, график стержня, график коробки, гистограмму, 3D гистограмму, дендрограмму, тепловую карту, шестнадцатеричную карту, график QQ, график контура, поверхность и рам.
Чтобы использовать SmilePlot, добавьте следующее в зависимости
<dependency>
<groupId>com.github.haifengl</groupId>
<artifactId>smile-plot</artifactId>
<version>4.0.0</version>
</dependency>
Smile также поддерживает визуализацию данных в декларативном подходе. С smile.plot.vega package мы можем создать спецификацию, которая описывает визуализации как отображения от данных до свойств графических знаков (например, точек или стержней). Спецификация основана на Vega-Lite. Компилятор Vega-Lite автоматически производит компоненты визуализации, включая оси, легенды и масштабы. Затем он определяет свойства этих компонентов на основе набора тщательно разработанных правил.
Ядра PCA | Isomap |
Многомерное масштабирование | Сом |
Нейронная сеть | SVM |
Иерархическая кластеризация | X-Means |
DBSCAN | Нейронный газ |
Вейвлет | Экспоненциальная семейная смесь |