Редактирование: Примеры кода на Scala

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

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 2: Строка 2:
  
 
==Популярные библиотеки==
 
==Популярные библиотеки==
* 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 позволяет быстро манипулировать данными и позволяет реализовать матричные и векторные операции, решать задачи оптимизации, обрабатывать сигналы устройств;
+
* 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. Так же имеет фрэймворк для предсказаний текста;
+
* 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. Имеет большой набор алгоритмов для решения задач классификации, регрессии, выбора фичей и другого;
+
* 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;
+
* 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>. Позволяет создавать динамические нейронные сети, давая возможность параллельных вычеслений.
 
* 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>[на 28.01.19 не создан]</sup>}}
+
Основная статья: [[Линейная регрессия]]<sup>[на 5.01.19 не создан]</sup>
  
 
Sbt зависимость:
 
Sbt зависимость:
Строка 34: Строка 34:
  
 
===Вариации регрессии===
 
===Вариации регрессии===
{{main|Вариации регрессии}}
+
Основная статья: [[Вариации регрессии]]<sup>[на 5.01.19 не создан]</sup>
  
  
Строка 53: Строка 53:
  
 
===Логистическая регрессия===
 
===Логистическая регрессия===
{{main|Логистическая регрессия}}
+
Основная статья: [[Логистическая регрессия]]<sup>[на 5.01.19 не создан]</sup>
  
 
Sbt зависимость:
 
Sbt зависимость:
Строка 81: Строка 81:
  
 
===Классификация при помощи MLP===
 
===Классификация при помощи MLP===
{{main|Нейронные сети, перцептрон}}
+
Основная статья: [[Нейронные сети, перцептрон]].
  
 
Sbt зависимость:
 
Sbt зависимость:
Строка 99: Строка 99:
  
 
===Рекуррентные нейронные сети===
 
===Рекуррентные нейронные сети===
{{main|Рекуррентные нейронные сети}}
+
Основная статья: [[Рекуррентные нейронные сети]]<sup>[на 5.01.19 не создан]</sup>
  
Пример кода, с использованием библиотеки DeepLearning.scala
+
Пример кода, с использованием билиотеки DeepLearning.scala
     <span style="color:#3D9970>// Задание слоёв</span>
+
     // Задание слоёв
 
     '''def '''tanh(x: INDArrayLayer): INDArrayLayer = {
 
     '''def '''tanh(x: INDArrayLayer): INDArrayLayer = {
 
       '''val '''exp_x = hyperparameters.exp(x)
 
       '''val '''exp_x = hyperparameters.exp(x)
Строка 117: Строка 117:
 
     }
 
     }
  
     <span style="color:#3D9970>// Определение структуры</span>
+
     // Определение структуры
 
     '''val '''batches = data.zip(data.tail).grouped(seqLength).toVector
 
     '''val '''batches = data.zip(data.tail).grouped(seqLength).toVector
 
     type WithHiddenLayer[A] = (A, INDArrayLayer)
 
     type WithHiddenLayer[A] = (A, INDArrayLayer)
Строка 139: Строка 139:
 
     }
 
     }
  
     <span style="color:#3D9970>// Определение одного шага обучения</span>
+
     // Определение одного шага обучения
 
     '''def '''initH = INDArrayLayer(Nd4j.zeros(hiddenSize, 1).forward)
 
     '''def '''initH = INDArrayLayer(Nd4j.zeros(hiddenSize, 1).forward)
 
     '''def '''singleRound(initprevloss: Losses): Future[Losses] =
 
     '''def '''singleRound(initprevloss: Losses): Future[Losses] =
Строка 167: Строка 167:
 
     }
 
     }
  
     <span style="color:#3D9970>// Обучение сети</span>
+
     // Обучение сети
 
     '''def '''unsafePerformFuture[A](f: Future[A]): A = Await.result(f.toScalaFuture, Duration.Inf)
 
     '''def '''unsafePerformFuture[A](f: Future[A]): A = Await.result(f.toScalaFuture, Duration.Inf)
 
     '''val '''losses = unsafePerformFuture(allRounds)
 
     '''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>
 
[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]].
  
 
===Метрический классификатор и метод ближайших соседей===
 
===Метрический классификатор и метод ближайших соседей===
Основная статья: [[Метрический классификатор и метод ближайших соседей#Пример на языке Scala | Метрический классификатор и метод ближайших соседей: Пример на языке Scala]].
+
Освновная статья: [[Метрический классификатор и метод ближайших соседей#Пример реализации на языке Scala | Метрический классификатор и метод ближайших соседей: Пример реализации на языке Scala]].
  
 
===Метод опорных векторов===
 
===Метод опорных векторов===
Основная статья: [[Метод опорных векторов (SVM)]]<sup>[на 28.01.19 не создан]</sup>.
+
Освновная статья: [[Метод опорных векторов]]<sup>[на 15.01.19 не создан]</sup>.
  
 
SBT зависимость:
 
SBT зависимость:
Строка 203: Строка 202:
  
 
===Дерево решений и случайный лес===
 
===Дерево решений и случайный лес===
Основная статья: [[Дерево решений и случайный лес#Пример на языке Scala | Дерево решений и случайный лес: Пример на языке Scala]].
+
Освновная статья: [[Дерево решений и случайный лес#Пример использования на языке Scala | Дерево решений и случайный лес: Пример использования на языке Scala]].
  
 
===Байесовская классификация===
 
===Байесовская классификация===
Основная статья: [[Байесовская классификация]]<sup>[на 28.01.19 не создан]</sup>.
+
Освновная статья: [[Байесовская классификация]]<sup>[на 7.01.19 не создан]</sup>.
  
 
SBT зависимость:
 
SBT зависимость:
 
   libraryDependencies '''+=''' "com.tsukaby" '''%%''' "naive-bayes-classifier-scala" '''%''' "0.2.0"
 
   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>:
 
Пример классификации используя 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]()
 
   '''val '''bayes = '''new '''BayesClassifier[String, String]()
   <span style="color:#3D9970>// Задание соотвествия категория - слово</span>
+
   // Задание соотвествия категория - слово
 
   bayes.learn("technology", "github" :: "git" :: "tech" :: "technology" :: Nil)
 
   bayes.learn("technology", "github" :: "git" :: "tech" :: "technology" :: Nil)
 
   bayes.learn("weather", "sun" :: "rain" :: "cloud" :: "weather" :: "snow" :: Nil)
 
   bayes.learn("weather", "sun" :: "rain" :: "cloud" :: "weather" :: "snow" :: Nil)
 
   bayes.learn("government", "ballot" :: "winner" :: "party" :: "money" :: "candidate" :: Nil)
 
   bayes.learn("government", "ballot" :: "winner" :: "party" :: "money" :: "candidate" :: Nil)
   <span style="color:#3D9970>// Тестовые примеры</span>
+
   // Тестовые примеры
 
   '''val '''unknownText1 = "I use git".split(" ")
 
   '''val '''unknownText1 = "I use git".split(" ")
 
   '''val '''unknownText2 = "Today's weather is snow".split(" ")
 
   '''val '''unknownText2 = "Today's weather is snow".split(" ")
 
   '''val '''unknownText3 = "I will vote '''for '''that party".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(unknownText1).map(_.category).getOrElse("")) // technology
   println(bayes.classify(unknownText2).map(_.category).getOrElse("")) <span style="color:#3D9970>// weather</span>
+
   println(bayes.classify(unknownText2).map(_.category).getOrElse("")) // weather
   println(bayes.classify(unknownText3).map(_.category).getOrElse("")) <span style="color:#3D9970>// government</span>
+
   println(bayes.classify(unknownText3).map(_.category).getOrElse("")) // government
  
 
===EM-алгоритм===
 
===EM-алгоритм===
Основная статья: [[EM-алгоритм]]<sup>[на 28.01.19 не создан]</sup>.
+
Освновная статья: [[EM-алгоритм]]<sup>[на 7.01.19 не создан]</sup>.
  
 
SBT зависимость:
 
SBT зависимость:
Строка 244: Строка 243:
  
 
===Бустинг, AdaBoost===
 
===Бустинг, AdaBoost===
Основная статья: [[Бустинг, AdaBoost#Пример на языке Scala | Бустинг, AdaBoost: Пример на языке Scala]].
+
Освновная статья: [[Бустинг, AdaBoost#Пример на языке Scala | Бустинг, AdaBoost: Пример на языке Scala]].
  
 
===Уменьшение размерности===
 
===Уменьшение размерности===
Основная статья: [[Уменьшение размерности#Пример на языке Scala | Уменьшение размерности: Пример на языке Scala]].
+
Освновная статья: [[Уменьшение размерности#Примеры кода на языке Scala | Уменьшение размерности: Примеры кода на языке Scala]].
  
 
== Примечания ==
 
== Примечания ==
 
<references/>
 
<references/>
[[Категория: Машинное обучение]] [[Категория: Примеры кода]]
 

Пожалуйста, учтите, что любой ваш вклад в проект «Викиконспекты» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Викиконспекты:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Чтобы изменить эту страницу, пожалуйста, ответьте на приведённый ниже вопрос (подробнее):

Отменить | Справка по редактированию (в новом окне)

Шаблоны, используемые на этой странице: