Изменения

Перейти к: навигация, поиск

Примеры кода на Scala

5 байт добавлено, 23:16, 8 апреля 2019
м
Байесовская классификация
==Популярные библиотеки==
* Breeze<ref>[https://github.com/scalanlp/breeze Breeze]</ref> {{---}} библиотека, которая копирует реализует идеи строения структур данных из MATLAB<ref>[https://www.mathworks.com/help/matlab/structures.html MATLAB, structures]</ref> и NumPy<ref>;[https://en.wikipedia.org/wiki/NumPy NumPy wiki]</ref>. Breeze позволяет быстро манипулировть манипулировать данными и позволяет реализовавать реализовать матричные и веторные векторные операции, решать задачи оптимизации, обрабатывать сигналы устройств.;* Epic<ref>[http://www.scalanlp.org/ ScalaNLP, Epic]</ref> {{---}} часть ScalaNLP, позволяющая парсить и обрабатывать текст, поддерживающая использование GPU. Так же имеет фрэймворк для предсказаний текста.;* Smpile<ref>[https://haifengl.github.io/smile/ Smile, Statistical Machine Intelligence and Learning Engine]</ref> {{---}} развивающийся проект, похожий на scikit-learn<ref>[https://scikit-learn.org/ scikit-learn]</ref>, разработанный на Java и имеющий API для Scala. Имеет большой набор алгоритмов для решения задач классификации, регрессии, выбора фичей и другого.;* Apache Spark MLlib<ref>[https://spark.apache.org/mllib/ Apache Spark MLlib]</ref> {{---}} построенная на Spark<ref>[https://spark.apache.org/ Apache Spark]</ref> имеет большой набор алгоритмов, написанный на Scala.;
* DeepLearning.scala <ref>[https://deeplearning.thoughtworks.school/ DeppLearning.scala]</ref> {{---}} набор инструментов для глубокого обучения<ref>[http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5 Глубокое обучение]</ref>. Позволяет создавать динамические нейронные сети, давая возможность параллельных вычеслений.
==Примеры кода==
===Линейная регрессия===
Основная статья: [[{{main|Линейная регрессия|l1=Линейная регрессия]]<sup>[на 528.01.19 не создан]</sup>}}
Sbt зависимость:
===Вариации регрессии===
Основная статья: [[{{main|Вариации регрессии]]<sup>[на 5.01.19 не создан]</sup>}}
===Логистическая регрессия===
Основная статья: [[{{main|Логистическая регрессия]]<sup>[на 5.01.19 не создан]</sup>}}
Sbt зависимость:
===Классификация при помощи MLP===
Основная статья: [[{{main|Нейронные сети, перцептрон]].}}
Sbt зависимость:
'''val '''data: AttributeDataset = read.table("iris.csv", delimiter = ",", response = Some(('''new '''NumericAttribute("class"), 2)))
'''val '''x: Array[Array['''Double''']] = data.x()
'''val '''y: Array['''Int'''] = data.y().map(_.to'''Int'''toInt)
'''val '''mlpModel = mlp(x, y, Array(2, 10, 2), ErrorFunction.LEAST_MEAN_SQUARES, ActivationFunction.LOGISTIC_SIGMOID)
plot(x, y, mlpModel)
===Рекуррентные нейронные сети===
Основная статья: [[{{main|Рекуррентные нейронные сети]]<sup>[на 5.01.19 не создан]</sup>}}
Пример кода, с использованием билиотеки библиотеки DeepLearning.scala <span style="color:#3D9970>// Задание слоёв</span>
'''def '''tanh(x: INDArrayLayer): INDArrayLayer = {
'''val '''exp_x = hyperparameters.exp(x)
(exp_x - exp_nx) / (exp_x + exp_nx)
}
'''def '''charRNN(x: INDArray, y: INDArray, hprev: INDArrayLayer): ('''Double'''LayerDoubleLayer, INDArrayLayer, INDArrayLayer) = {
'''val '''hnext = tanh(wxh.dot(x) + whh.dot(hprev) + bh)
'''val '''yraw = why.dot(hnext) + by
}
<span style="color:#3D9970>// Определение структуры</span>
'''val '''batches = data.zip(data.tail).grouped(seqLength).toVector
type WithHiddenLayer[A] = (A, INDArrayLayer)
type Batch = IndexedSeq[(Char, Char)]
type Losses = Vector['''Double''']
'''def '''singleBatch(batch: WithHiddenLayer[Batch]): WithHiddenLayer['''Double'''LayerDoubleLayer] = {
batch '''match '''{
'''case '''(batchseq, hprev) => batchseq.foldLeft(('''Double'''LayerDoubleLayer(0.0.forward), hprev)) { (bstate: WithHiddenLayer['''Double'''LayerDoubleLayer], xy: (Char, Char)) =>
(bstate, xy) '''match '''{
'''case '''((tot, localhprev), (x, y)) => {
}
<span style="color:#3D9970>// Определение одного шага обучения</span>
'''def '''initH = INDArrayLayer(Nd4j.zeros(hiddenSize, 1).forward)
'''def '''singleRound(initprevloss: Losses): Future[Losses] =
'''case '''(bloss, hnext) => bloss.train.map {
(blossval: '''Double''') => {
'''val '''nloss = prevloss.last * 0.999 + bloss'''val '''blossval * 0.001 '''val '''loss_seq = prevloss :+ prevloss.last * 0.999 + bloss'''val '''blossval * 0.001
(loss_seq, hnext)
}
}
<span style="color:#3D9970>// Обучение сети</span>
'''def '''unsafePerformFuture[A](f: Future[A]): A = Await.result(f.toScalaFuture, Duration.Inf)
'''val '''losses = unsafePerformFuture(allRounds)
===Долгая краткосрочная память===
Освновная Основная статья: [[Долгая краткосрочная память]]<sup>[на 15.01.19 не создан]</sup>.
[https://github.com/IlyaHalsky/neerc-wiki-ml-scala/blob/master/lstm/GravesLSTMCharModellingExample.scala Пример реализации LSTM] на основе DeepLearning4j<ref>[https://deeplearning4j.org/ DeepLearning4j]</ref> и ND4J<ref>[https://deeplearning4j.org/docs/latest/nd4j-overview ND4J]</ref>
 
===Обработка естественного языка===
Основная статья: [[Обработка естественного языка#Пример кода на языке Scala | Обработка естественного языка: Пример кода на языке Scala]].
===Метрический классификатор и метод ближайших соседей===
Освновная Основная статья: [[Метрический классификатор и метод ближайших соседей#Пример реализации на языке Scala | Метрический классификатор и метод ближайших соседей: Пример реализации на языке Scala]].
===Метод опорных векторов===
Освновная Основная статья: [[Метод опорных векторов(SVM)]]<sup>[на 1528.01.19 не создан]</sup>.
SBT зависимость:
'''val '''iris: AttributeDataset = read.table("iris.csv", delimiter = ",", response = Some(('''new '''NumericAttribute("class"), 2)))
'''val '''x: Array[Array['''Double''']] = iris.x()
'''val '''y: Array['''Int'''] = iris.y().map(_.to'''Int'''toInt)
'''val '''SVM = svm(x, y, '''new '''GaussianKernel(8.0), 100)
'''val '''predictions: Array['''Int'''] = x.map(SVM.predict)
'''val '''f1Score = '''new '''FMeasure().measure(predictions, y)
plot(x, y, SVM)
 
===Дерево решений и случайный лес===
Освновная Основная статья: [[Дерево решений и случайный лес#Пример использования на языке Scala | Дерево решений и случайный лес: Пример использования на языке Scala]].
===Байесовская классификация===
Освновная Основная статья: [[Байесовская классификация]]<sup>[на 7.01.19 не создан]</sup>.
SBT зависимость:
libraryDependencies '''+=''' "com.tsukaby" '''%%''' "naive-bayes-classifier-scala" '''%''' "0.2.0"
Пример классификации используя smile.classification.cart<ref>[https://github.com/tsukaby/naive-bayes-classifier-scala Naive bayes classifier, Scala]</ref>:
<span style="color:#3D9970>// Создание модели</span>
'''val '''bayes = '''new '''BayesClassifier[String, String]()
<span style="color:#3D9970>// Задание соотвествия категория - слово</span>
bayes.learn("technology", "github" :: "git" :: "tech" :: "technology" :: Nil)
bayes.learn("weather", "sun" :: "rain" :: "cloud" :: "weather" :: "snow" :: Nil)
bayes.learn("government", "ballot" :: "winner" :: "party" :: "money" :: "candidate" :: Nil)
<span style="color:#3D9970>// Тестовые примеры</span>
'''val '''unknownText1 = "I use git".split(" ")
'''val '''unknownText2 = "Today's weather is snow".split(" ")
'''val '''unknownText3 = "I will vote '''for '''that party".split(" ")
<span style="color:#3D9970>// Классификация</span> println(bayes.classify(unknownText1).map(_.category).getOrElse("")) <span style="color:#3D9970>// technology</span> println(bayes.classify(unknownText2).map(_.category).getOrElse("")) <span style="color:#3D9970>// weather</span> println(bayes.classify(unknownText3).map(_.category).getOrElse("")) <span style="color:#3D9970>// government</span>
===EM-алгоритм===
Освновная Основная статья: [[EM-алгоритм]]<sup>[на 728.01.19 не создан]</sup>.
SBT зависимость:
===Бустинг, AdaBoost===
Освновная Основная статья: [[Бустинг, AdaBoost#Пример на языке Scala | Бустинг, AdaBoost: Пример на языке Scala]].
===Уменьшение размерности===
Освновная Основная статья: [[Уменьшение размерности#Примеры кода Пример на языке Scala | Уменьшение размерности: Примеры кода Пример на языке Scala]].
== Примечания ==
<references/>
[[Категория: Машинное обучение]] [[Категория: Примеры кода]]
174
правки

Навигация