Примеры кода на Scala — различия между версиями
(→Примеры кода) |
(→Линейная регрессия) |
||
| Строка 28: | Строка 28: | ||
plot(x, y, KNN) | plot(x, y, KNN) | ||
===Линейная регрессия=== | ===Линейная регрессия=== | ||
| + | Sbt зависимость: | ||
| + | libraryDependencies += "org.apache.spark" %% "spark-mllib" % "2.4.0" % "runtime" | ||
| + | Пример линейной регрессии c применением org.apache.spark.ml.regression.LinearRegression<ref>[https://spark.apache.org/docs/latest/ml-classification-regression.html#linear-regression Spark ML, LinearRegression]</ref>: | ||
| + | val training = spark.read.format("libsvm") | ||
| + | .load("linear_regression.txt") | ||
| + | val lr = new LinearRegression() | ||
| + | .setMaxIter(10) | ||
| + | .setRegParam(0.3) | ||
| + | .setElasticNetParam(0.8) | ||
| + | val lrModel = lr.fit(training) | ||
| + | Вывод итоговых параметров модели: | ||
| + | println(lrModel.coefficients) | ||
| + | println(lrModel.intercept) | ||
| + | val trainingSummary = lrModel.summary | ||
| + | println(trainingSummary.totalIterations) | ||
| + | println(trainingSummary.objectiveHistory.mkString(",")) | ||
| + | trainingSummary.residuals.show() | ||
| + | println(trainingSummary.rootMeanSquaredError) | ||
| + | println(trainingSummary.r2) | ||
== Примечания == | == Примечания == | ||
<references/> | <references/> | ||
Версия 20:44, 12 января 2019
Раздел в разработке [WIP]
Популярные библиотеки
- Breeze[1] — библиотека, которая копирует реализует идеи строения структур данных из MATLAB[2] и NumPy[3]. Breeze позволяет быстро манипулировть данными и позволяет реализовавать матричные и веторные операции, решать задачи оптимизации, обрабатывать сигналы устройств.
- Epic[4] — часть ScalaNLP, позволяющая парсить и обрабатывать текст, поддерживающая использование GPU. Так же имеет фрэймворк для предсказаний текста.
- Smpile[5] — развивающийся проект, похожий на scikit-learn[6], разработанный на Java и имеющий API для Scala. Имеет большой набор алгоритмов для решения задач классификации, регрессии, выбора фичей и другого.
- Apache Spark MLlib[7] — построенная на Spark[8] имеет большой набор алгоритмов, написанный на Scala.
- DeepLearning.scala [9] — набор инструментов для глубокого обучения[10]. Позволяет создавать динамические нейронные сети, давая возможность параллельных вычеслений.
Примеры кода
KNN
SBT зависимость:
libraryDependencies += "com.github.haifengl" %% "smile-scala" % "1.5.2"
Пример классификации датасета и вычисления F1 меры[11] используя smile.classification.knn[12]:
import smile.classification._ import smile.data._ import smile.plot._ import smile.read import smile.validation.FMeasure
val toy: AttributeDataset = read.table("iris.csv", delimiter = ",", response = Some((new NumericAttribute("class"), 2)))
val x: Array[Array[Double]] = toy.x()
val y: Array[Int] = toy.y().map(_.toInt)
val KNN: KNN[Array[Double]] = knn(x, y, 3)
val predictions: Array[Int] = x.map(KNN.predict)
val f1Score = new FMeasure().measure(predictions, y)
plot(x, y, KNN)
Линейная регрессия
Sbt зависимость:
libraryDependencies += "org.apache.spark" %% "spark-mllib" % "2.4.0" % "runtime"
Пример линейной регрессии c применением org.apache.spark.ml.regression.LinearRegression[13]:
val training = spark.read.format("libsvm")
.load("linear_regression.txt")
val lr = new LinearRegression()
.setMaxIter(10)
.setRegParam(0.3)
.setElasticNetParam(0.8)
val lrModel = lr.fit(training)
Вывод итоговых параметров модели:
println(lrModel.coefficients)
println(lrModel.intercept)
val trainingSummary = lrModel.summary
println(trainingSummary.totalIterations)
println(trainingSummary.objectiveHistory.mkString(","))
trainingSummary.residuals.show()
println(trainingSummary.rootMeanSquaredError)
println(trainingSummary.r2)