Smile (통계 기계 인텔리전스 및 학습 엔진)은 Java 및 Scala의 빠르고 포괄적 인 기계 학습, NLP, 선형 대수, 그래프, 보간 및 시각화 시스템입니다. 고급 데이터 구조 및 알고리즘을 통해 Smile은 최신 성능을 제공합니다. Smile은 잘 문서화되어 있으며 프로그래밍 안내서 및 자세한 정보는 프로젝트 웹 사이트를 확인하십시오.
스마일은 분류, 회귀, 클러스터링, 연관 규칙 마이닝, 기능 선택, 매니 폴드 학습, 다차원 스케일링, 유전자 알고리즘, 결 측값 대치, 효율적인 가장 가까운 이웃 검색 등을 포함한 기계 학습의 모든 측면을 다룹니다.
Smile은 다음과 같은 주요 기계 학습 알고리즘을 구현합니다.
분류 : 벡터 머신, 의사 결정 트리, Adaboost, 그라디언트 부스트, 랜덤 포리스트, 로지스틱 회귀, 신경망, RBF 네트워크, 최대 엔트로피 분류기, KNN, Naïve Bayesian, Fisher/Linear/2 차/정규화 된 판별 분석.
회귀 : 지원 벡터 회귀, 가우스 프로세스, 회귀 트리, 그라디언트 부스트, 랜덤 포레스트, RBF 네트워크, OLS, LASSO, ELASTICNET, RIDGE 회귀 분석.
기능 선택 : 유전자 알고리즘 기반 기능 선택, 앙상블 학습 기반 기능 선택, 트레 슈, 신호 노이즈 비율, 합계 비율.
클러스터링 : 자작 나무, 클라란, DBSCAN, DENCLUE, 결정 론적 어닐링, K-MEANS, X-MEANS, G-MEANS, 신경 가스, 신경 가스 증가, 계층 적 클러스터링, 순차 정보 병목 현상, 자체 조직 맵, 스펙트럼 클러스터, 최소 엔트로피 클러스터링.
협회 규칙 및 빈번한 품목 세트 마이닝 : FP-Growth 마이닝 알고리즘.
매니 폴드 학습 : ISOMAP, LLE, Laplacian EigenMap, T-SNE, UMAP, PCA, 커널 PCA, 확률 PCA, GHA, Random Projection, ICA.
다차원 스케일링 : 클래식 MDS, 동위 원소 MD, Sammon 매핑.
가장 가까운 이웃 검색 : BK-Tree, Cover Tree, KD-Tree, Simhash, LSH.
시퀀스 학습 : 숨겨진 Markov 모델, 조건부 랜덤 필드.
자연 언어 처리 : 문장 스플리터 및 토큰 화기, Bigram 통계 테스트, 문구 추출기, 키워드 추출기, Stemmer, POS 태깅, 관련성 순위
프로젝트 pom.xml 파일에 다음을 추가하여 Maven Central 저장소를 통해 라이브러리를 사용할 수 있습니다.
<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의 경우 Gradle 빌드 스크립트의 dependencies 섹션에 아래를 추가하십시오.
implementation("com.github.haifengl:smile-kotlin:4.0.0")
Clojure API의 경우 프로젝트 또는 빌드 파일에 다음 종속성을 추가하십시오.
[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 구현을 선호하는 경우 "org.bytedeco.openblas.load"시스템 속성으로 "java.library.path"또는 클래스 경로에있는 라이브러리를 사용할 수 있습니다. 예를 들어, Mac OS X의 Accelerate 프레임 워크에서 BLAS 라이브러리를 사용하려면 -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 및 VAR) 및 오픈 소스 프로젝트의 개발 및 유통 요구를 충족시키기 위해 설계된 이중 라이센스 모델을 사용합니다. 자세한 내용은 라이센스를 참조하십시오.
Smile은 Java, Scala 및 Kotlin을위한 대화식 쉘과 함께 제공됩니다. 릴리스 페이지에서 사전 포장 된 스마일을 다운로드하십시오. 미소의 홈 디렉토리에서 유형
./bin/smile
스칼라 쉘에 들어가기 위해. 쉘에서 유효한 스칼라 표현식을 실행할 수 있습니다. 가장 간단한 경우 계산기로 사용할 수 있습니다. 게다가, 모든 고급 스마일 운영자는 쉘에 사전 정의되어 있습니다. 기본적으로 쉘은 최대 75%의 메모리를 사용합니다. 큰 데이터를 처리하기 위해 더 많은 메모리가 필요한 경우 -J-Xmx 또는 -XX:MaxRAMPercentage 옵션을 사용하십시오. 예를 들어,
./bin/smile -J-Xmx30G
메모리 및 기타 JVM 설정에 대해 구성 파일 ./conf/smile.ini 수정할 수도 있습니다.
Java의 jshell을 사용하려면 타입
./bin/jshell.sh
클래스 경로에 미소의 항아리가 있습니다. 마찬가지로, 실행하십시오
./bin/kotlin.sh
Kotlin Relt를 입력하려면.
대부분의 모델은 Java Serializable 인터페이스 (모든 분류기가 Serializable 인터페이스를 지원합니다)를 지원하므로 Spark에서 사용할 수 있습니다. ProtoStuff는 선전 공간 호환성 (스키마 진화) 및 검증을 지원하는 훌륭한 대안입니다. XML 외에도 ProtoStuff는 JSON, YAML, Protobuf 등과 같은 다른 많은 형식을 지원합니다.
Smile은 스윙 기반 데이터 시각화 라이브러리 SmilePlot을 제공합니다. 이는 산점도, 라인 플롯, 계단 플롯, 바 플롯, 박스 플롯, 히스토그램, 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- 평균 |
DBSCAN | 신경 가스 |
잔물결 | 지수 패밀리 혼합물 |