Smile (เครื่องยนต์ทางสถิติและเครื่องยนต์การเรียนรู้) เป็นการเรียนรู้ของเครื่องที่รวดเร็วและครอบคลุม NLP, พีชคณิตเชิงเส้น, กราฟ, การแก้ไขและระบบการสร้างภาพข้อมูลใน Java และ Scala ด้วยโครงสร้างข้อมูลขั้นสูงและอัลกอริทึม Smile จะมอบประสิทธิภาพที่ล้ำสมัย Smile ได้รับการบันทึกไว้เป็นอย่างดีและโปรดตรวจสอบเว็บไซต์โครงการสำหรับคู่มือการเขียนโปรแกรมและข้อมูลเพิ่มเติม
รอยยิ้มครอบคลุมทุกแง่มุมของการเรียนรู้ของเครื่องรวมถึงการจำแนกประเภทการถดถอยการจัดกลุ่มการขุดกฎการเชื่อมโยงการเลือกคุณสมบัติการเรียนรู้มากมายการปรับขนาดหลายมิติอัลกอริทึมทางพันธุกรรมการใส่ค่าที่ขาดหายไปการค้นหาเพื่อนบ้านที่ใกล้ที่สุดที่มีประสิทธิภาพ ฯลฯ
Smile ใช้อัลกอริทึมการเรียนรู้ของเครื่องจักรหลักต่อไปนี้:
การจำแนกประเภท: สนับสนุนเครื่องเวกเตอร์, ต้นไม้ตัดสินใจ, Adaboost, การเพิ่มความลาดชัน, ป่าสุ่ม, การถดถอยโลจิสติก, เครือข่ายประสาท, เครือข่าย RBF, ตัวจําแนกเอนโทรปีสูงสุด, KNN, Naïve Bayesian, การวิเคราะห์การจำแนกประเภทฟิชเชอร์/เชิงเส้น
การถดถอย: สนับสนุนการถดถอยเวกเตอร์, กระบวนการเกาส์, ต้นไม้ถดถอย, การเพิ่มความลาดชัน, ป่าสุ่ม, เครือข่าย RBF, OLS, Lasso, Elasticnet, การถดถอยของสันเขา
การเลือกคุณลักษณะ: การเลือกคุณสมบัติทางพันธุกรรมอัลกอริทึม, การเลือกคุณสมบัติการเรียนรู้ของวงดนตรี, Treeshap, อัตราส่วนสัญญาณรบกวนสัญญาณ, อัตราส่วนสี่เหลี่ยมรวม
การจัดกลุ่ม: เบิร์ช, คลาร, DBSCAN, Denclue, การหลอมที่กำหนด, k-mean, x-mean, G-mean, ก๊าซประสาท, ก๊าซประสาทที่กำลังเติบโต, การจัดกลุ่มแบบลำดับชั้น, คอขวดข้อมูลตามลำดับ, แผนที่การจัดระเบียบตนเอง, การจัดกลุ่มสเปกตรัม, การจัดกลุ่ม
กฎการเชื่อมโยงและการขุดรายการบ่อยครั้ง: อัลกอริทึมการขุดการเติบโตของ FP
การเรียนรู้มากมาย: isomap, lle, laplacian eigenmap, t-sne, umap, PCA, เคอร์เนล PCA, PCA ความน่าจะเป็น, GHA, การฉายแบบสุ่ม, ICA
การปรับขนาดหลายมิติ: MDS คลาสสิก, MDS isotonic, การทำแผนที่ Sammon
การค้นหาเพื่อนบ้านที่ใกล้ที่สุด: BK-Tree, Cover Tree, KD-Tree, Simhash, LSH
การเรียนรู้ลำดับ: โมเดล Markov ที่ซ่อนอยู่, สนามสุ่มแบบมีเงื่อนไข
การประมวลผลภาษาธรรมชาติ: ตัวแยกประโยคและโทเคนิเซอร์, การทดสอบทางสถิติ Bigram, สกัดวลี, ตัวแยกคำหลัก, stemmer, การติดแท็ก POS, การจัดอันดับความเกี่ยวข้อง
คุณสามารถใช้ไลบรารีผ่านที่เก็บ Maven Central ได้โดยเพิ่มไฟล์ Project 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")
สำหรับ 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 อื่น ๆ คุณสามารถใช้ห้องสมุดใด ๆ ที่พบใน "java.library.path" หรือบนเส้นทางคลาสโดยระบุด้วยคุณสมบัติระบบ "org.bytedeco.openblas.load" ตัวอย่างเช่นในการใช้ไลบรารี BLAS จากเฟรมเวิร์กเร่งความเร็วบน Mac OS X เราสามารถผ่านตัวเลือกได้เช่น -Dorg.bytedeco.openblas.load=blas
หากคุณมีการติดตั้ง MKL เริ่มต้นหรือรวมโมดูลต่อไปนี้ซึ่งรวมถึง MKL Binaries เวอร์ชันเต็ม 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) และโครงการโอเพ่นซอร์ส สำหรับรายละเอียดโปรดดูใบอนุญาต
Smile มาพร้อมกับเปลือกหอยแบบโต้ตอบสำหรับ Java, Scala และ Kotlin ดาวน์โหลดรอยยิ้มที่บรรจุไว้ล่วงหน้าจากหน้ารีลีส ในโฮมไดเร็กตอรี่แห่งรอยยิ้มพิมพ์
./bin/smile
เพื่อเข้าสู่เชลล์สกาล่า คุณสามารถเรียกใช้นิพจน์ Scala ที่ถูกต้องใด ๆ ในเชลล์ ในกรณีที่ง่ายที่สุดคุณสามารถใช้เป็นเครื่องคิดเลข นอกจากนี้ผู้ให้บริการรอยยิ้มระดับสูงทั้งหมดถูกกำหนดไว้ล่วงหน้าในเปลือกหอย โดยค่าเริ่มต้นเชลล์จะใช้หน่วยความจำสูงสุด 75% หากคุณต้องการหน่วยความจำเพิ่มเติมเพื่อจัดการข้อมูลขนาดใหญ่ให้ใช้ตัวเลือก -J-Xmx หรือ -XX:MaxRAMPercentage ตัวอย่างเช่น,
./bin/smile -J-Xmx30G
นอกจากนี้คุณยังสามารถแก้ไขไฟล์กำหนดค่า ./conf/smile.ini สำหรับหน่วยความจำและการตั้งค่า JVM อื่น ๆ
หากต้องการใช้ jshell ของ Java ให้พิมพ์
./bin/jshell.sh
ซึ่งมีขวดของ Smile ใน Classpath ในทำนองเดียวกันวิ่ง
./bin/kotlin.sh
เพื่อเข้าสู่ Kotlin Repl
รุ่นส่วนใหญ่รองรับอินเตอร์เฟส Java Serializable (ตัวแยกประเภททั้งหมดสนับสนุนอินเตอร์เฟส Serializable ) เพื่อให้คุณสามารถใช้ใน Spark Protostuff เป็นทางเลือกที่ดีที่รองรับความเข้ากันได้ไปข้างหน้า (วิวัฒนาการสคีมา) และการตรวจสอบความถูกต้อง นอกเหนือจาก XML, Protostuff สนับสนุนรูปแบบอื่น ๆ อีกมากมายเช่น JSON, YAML, Protobuf ฯลฯ
Smile ให้บริการการสร้างภาพข้อมูลที่ใช้การแกว่งด้วยการแกว่งรอยยิ้มซึ่งให้พล็อตกระจาย, พล็อตบรรทัด, พล็อตบันได, พล็อตแท่ง, พล็อตกล่อง, ฮิสโตแกรม, ฮิสโตแกรม 3 มิติ, dendrogram, ความร้อน, hexmap, พล็อต 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 | ก๊าซประสาท |
เวฟเล็ต | ส่วนผสมของครอบครัวเลขชี้กำลัง |