Изменения
→Библиотеки для глубокого обучения
==Scikit-learn==
===Описание===
Scikit-learn<ref>[https://scikit-learn.org/stable/ Библиотека scikit-learn]</ref> {{---}} библиотека машинного обучения на языке программирования Python с открытым исходным кодом. Содержит реализации практически всех возможных преобразований, и нередко ее одной хватает для полной реализации модели. В данной библиотеки реализованы методы разбиения датасета на тестовый и обучающий, вычисление основных метрик над наборами данных, проведение [[кросс-валидации|Кросс-валидация]]<sup>[на 28.01.19 не создан]</sup>. В библиотеке также есть основные алгоритмы машинного обучения: [[Линейная регрессия|линейной регрессии, (]]<sup>[на 28.01.19 не создан]</sup> и ее её модификаций Лассо, гребневой регрессии, [[Метод опорных векторов (SVM), |опорных векторов]]<sup>[на 28.01.19 не создан]</sup>, [[Дерево решений и случайный лес|решающих деревьев и лесов ]] и др. Есть и реализации основных методов [[Кластеризация|кластеризации]]. Кроме того, библиотека содержит постоянно используемые исследователями методы работы с параметрами (фичами)признаками: например, понижение размерности [[Метод главных компонент (PCA)|методом главных компонент]]<sup>[на 28.01.19 не создан]</sup>. Частью пакета является библиотека imblearn<ref>[https://imbalanced-learn.readthedocs.io/en/stable/index.html Библиотека imbalanced-learn]</ref>, позволяющая работать с разбалансированными выборками и генерировать новые значения.
===Примеры кода===
====Линейная регрессия====
{{Main|Линейная регрессия|l1=Линейная регрессия<sup>[на 28.01.19 не создан]</sup>}}
<font color="green"># Add required imports</font>
'''import''' matplotlib.pyplot '''as''' plt
'''import''' numpy '''as''' np
'''from''' sklearn '''import''' datasets
'''from''' sklearn.linear_model '''import''' LinearRegression
'''from''' sklearn.metrics '''import''' mean_squared_error, r2_score
Загрузка датасета:
diabetes = datasets.load_diabetes()
<font color="green"># Use only one feature</font>
diabetes_X = diabetes.data[:, np.newaxis, <font color="blue">2</font>]
Разбиение датасета на тренировочный и тестовый:
<font color="green"># Split the data into training/testing sets</font>
x_train = diabetes_X[:<font color="blue">-20</font>]
x_test = diabetes_X[<font color="blue">-20</font>:]
<font color="green"># Split the targets into training/testing sets</font>
y_train = diabetes.target[:<font color="blue">-20</font>]
y_test = diabetes.target[<font color="blue">-20</font>:]
Построение и обучение модели:
lr = LinearRegression()
lr.fit(x_train, y_train)
predictions = lr.predict(x_test)
Оценка алгоритма:
<font color="green"># The mean squared error</font>
print(<font color="red">"Mean squared error: %.2f"</font>
% mean_squared_error(y_test, predictions))
<font color="green"># Explained variance score: 1 is perfect prediction</font>
print(<font color="red">'Variance score: %.2f'</font> % r2_score(y_test, predictions))
> '''Mean squared error: 2548.07'''
'''Variance score: 0.47'''
Построение графика прямой, получившейся в результате работы линейной регрессии:
plt.scatter(x_test, y_test, color=<font color="red">'black'</font>)
plt.plot(x_test, predictions, color=<font color="red">'blue'</font>, linewidth=<font color="blue">3</font>)
plt.xticks(())
plt.yticks(())
plt.show()
[[File:Diabetes-sklearn.png|400px|none|super]]
====Логистическая регрессия====
Загрузка датасета:
====Перцептрон====
Загрузка датасета:
> '''[[ 7 0 0]'''
==Tensorflow==
===Примеры кода===
====Сверточная нейронная сеть====
Реализация сверточной нейронной сети для классификации цифр из датасета MNIST:
Y: mnist.test.labels[:<font color="blue">256</font>],
keep_prob: <font color="blue">1.0</font>}))
> '''Step 1, Minibatch Loss= 41724.0586, Training Accuracy= 0.156'''
'''Step 10, Minibatch Loss= 17748.7500, Training Accuracy= 0.242'''
'''Step 20, Minibatch Loss= 8307.6162, Training Accuracy= 0.578'''
'''Step 30, Minibatch Loss= 3108.5703, Training Accuracy= 0.766'''
'''Step 40, Minibatch Loss= 3273.2749, Training Accuracy= 0.727'''
'''Step 50, Minibatch Loss= 2754.2861, Training Accuracy= 0.820'''
'''Step 60, Minibatch Loss= 2467.7925, Training Accuracy= 0.844'''
'''Step 70, Minibatch Loss= 1423.8140, Training Accuracy= 0.914'''
'''Step 80, Minibatch Loss= 1651.4656, Training Accuracy= 0.875'''
'''Step 90, Minibatch Loss= 2105.9263, Training Accuracy= 0.867'''
'''Step 100, Minibatch Loss= 1153.5090, Training Accuracy= 0.867'''
'''Step 110, Minibatch Loss= 1751.1400, Training Accuracy= 0.898'''
'''Step 120, Minibatch Loss= 1446.2119, Training Accuracy= 0.922'''
'''Step 130, Minibatch Loss= 1403.7135, Training Accuracy= 0.859'''
'''Step 140, Minibatch Loss= 1089.7897, Training Accuracy= 0.930'''
'''Step 150, Minibatch Loss= 1147.0751, Training Accuracy= 0.898'''
'''Step 160, Minibatch Loss= 1963.3733, Training Accuracy= 0.883'''
'''Step 170, Minibatch Loss= 1544.2725, Training Accuracy= 0.859'''
'''Step 180, Minibatch Loss= 977.9219, Training Accuracy= 0.914'''
'''Step 190, Minibatch Loss= 857.7977, Training Accuracy= 0.930'''
'''Step 200, Minibatch Loss= 430.4735, Training Accuracy= 0.953'''
'''Optimization Finished!'''
'''Testing Accuracy: 0.94140625'''
==Keras==
===Примеры кода===
====Сверточная нейронная сеть====
Реализация сверточной нейронной сети для классификации текста:
print(len(x_train), <font color="red">'train sequences'</font>)
print(len(x_test), <font color="red">'test sequences'</font>)
> '''25000 train sequences''' '''25000 test sequences'''
print(<font color="red">'Pad sequences (samples x time)'</font>)
x_train = sequence.pad_sequences(x_train, maxlen=maxlen)
print(<font color="red">'x_train shape:'</font>, x_train.shape)
print(<font color="red">'x_test shape:'</font>, x_test.shape)
> '''Pad sequences (samples x time)''' '''x_train shape: (25000, 400)''' '''x_test shape: (25000, 400)'''
model = Sequential()
epochs=epochs,
validation_data=(x_test, y_test))
> '''Train on 25000 samples, validate on 25000 samples'''
'''Epoch 1/2'''
'''25000/25000 [==============================] - 136s 5ms/step - loss: 0.4107 - acc: 0.7923 - val_loss: 0.2926 - val_acc: 0.8746'''
'''Epoch 2/2'''
'''25000/25000 [==============================] - 136s 5ms/step - loss: 0.2294 - acc: 0.9082 - val_loss: 0.3200 - val_acc: 0.8652'''
==Другие библиотеки для машинного обучения на Python==
===Вспомогательные библиотеки===* NumPy<ref>[http://www.numpy.org Библиотека NumPy]</ref> {{---}} библиотека, добавляющая поддержку больших многомерных массивов и матриц, вместе с большой библиотекой высокоуровневых математических функций для операций с этими массивами. Данная библиотека предоставляет реализации вычислительных алгоритмов (в виде функций и операторов), оптимизированные для работы с многомерными массивами. В результате любой алгоритм, который может быть выражен в виде последовательности операций над массивами (матрицами) и реализованный с использованием NumPy, работает так же быстро, как эквивалентный код, выполняемый в MATLAB<ref>[https://www.mathworks.com/products/matlab.html MATLAB]</ref>.;* SciPy<ref>[https://www.scipy.org Библиотека SciPy]</ref> {{---}} открытая библиотека высококачественных научных инструментов для языка программирования Python. SciPy содержит модули для оптимизации, интегрирования, специальных функций, обработки сигналов, обработки изображений, генетических алгоритмов, решения обыкновенных дифференциальных уравнений и других задач, обычно решаемых в науке и при инженерной разработке.;* Pandas<ref>[https://pandas.pydata.org Библиотека Pandas]</ref> {{---}} библиотека Python, которая является мощным инструментом для анализа данных. Пакет дает возможность строить сводные таблицы, выполнять группировки, предоставляет удобный доступ к табличным данным и позволяет строить графики на полученных наборах данных при помощи библиотеки Matplotlib.;
* Matplotlib<ref>[https://matplotlib.org Библиотека Matplotlib]</ref> {{---}} библиотека Python для построения качественных двумерных графиков. Matplotlib является гибким, легко конфигурируемым пакетом, который вместе с NumPy, SciPy и IPython<ref>[https://ipython.org IPython Notebook]</ref> предоставляет возможности, подобные MATLAB.
* [https://github.com/HIPS/autograd Autograd] - Библиотека автодифференциирования функций на numpy. ПОзволяет делать простые нейросети и оптимизацию научных расчётов. Для тяжёлого лучше использовать GPU-библиотеки.* [https://github.com/google/jax JAX] - улучшенный autograd.* [https://github.com/ofnote/tsalib Tensor shape annotation lib] - позволяет назначить измерениям тензора человекочитаемые метки ===Библиотеки для глубокого обучения===* PyTorch<ref>[https://pytorch.org Библиотека PyTorch]</ref> {{---}} библиотека для глубокого обучения, созданная на базе Torch<ref>[https://en.wikipedia.org/wiki/Torch_(machine_learning) Torch]</ref> и развиваемая компанией Facebook. Две ключевые функциональности данной библиотеки {{---}} тензорные вычисления с развитой поддержкой ускорения на GPU (OpenCL) и глубокие нейронные сети на базе системы autodiff;* Theano<ref>[http://deeplearning.net/software/theano/ Библиотека Theano]</ref> {{---}} расширение языка программирования Python, позволяющее эффективно вычислять математические выражения, содержащие многомерные массивы. Библиотека предоставляет базовый набор инструментов для конфигурации нейронных сетей и их обучения. Наибольшее признание данная библиотека получила в задачах машинного обучения при решении задач оптимизации. Она позволяет использовать возможности GPU без изменения кода программы, что делает ее незаменимой при выполнении ресурсоемких задач.;* Caffe<ref>[http://caffe.berkeleyvision.org Библиотека Caffe]</ref> {{---}} фреймворк для обучения нейронных сетей, созданный университетом Беркли. Как и Tensorflow, использует cuDNN для работы с видеокартами NVIDIA;* Microsoft Cognitive Toolkit (CNTK)<ref>[https://www.microsoft.com/en-us/cognitive-toolkit/ Библиотека CNTK]</ref> {{---}} фреймворк от корпорации Microsoft, предоставляющий реализации архитектур различных нейронных сетей.* [https://github.com/plaidml/plaidml plaidml] - ещё одна библиотека на OpenCL, умеющая компилировать граф в оптимизированные кастомные ядра OpenCL. ===Библиотеки для обработки естественного языка===* NLTK<ref>[https://www.nltk.org Библиотека NLTK]</ref> {{---}} пакет библиотек и программ для символьной и статистической обработки естественного языка, написанных на языке программирования Python.;
* Gensim<ref>[https://radimrehurek.com/gensim/ Библиотека Gensim]</ref> {{---}} инструмент для автоматической обработки языка, основанный на машинном обучении. В Gensim реализованы алгоритмы дистрибутивной семантики word2vec и doc2vec, он позволяет решать задачи тематического моделирования и выделять основные темы текста или документа.
===Библиотеки для градиентного бустинга===* [[XGBoost|Xgboost]]<sup>[на 28.01.19 не создан]</sup><ref>[https://xgboost.readthedocs.io/en/latest/python/index.html Библиотека Xgboost]</ref> {{---}} библиотека с реализацией градиентного бустинга, которая для выбора разбиения использует сортировку и модели, основанные на анализе гистограмм.;* LightGBM<ref>[http://www.dmtk.io Библиотека LightGBM]</ref> {{---}} фреймворк с реализацией градиентного бустинга от корпорации Microsoft. Является частью проекта Microsoft DMTK, посвященного реализации подходов машинного обучения для .Net.;* [[CatBoost|CatBoost]]<ref>[https://catboost.ai Библиотека CatBoost]</ref> {{---}} библиотека с градиентным бустингом от компании Яндекс, в которой реализуется особый подход к обработке категориальных признаков, основанный на подмене категориальных признаков статистиками на основе предсказываемого значения.* Microsoft Cognitive Toolkit (CNTK)<ref>[https://www.microsoft.com/en-us/cognitive-toolkit/ Библиотека CNTK]</ref> {{---}} фреймворк от корпорации Microsoft, предоставляющий реализации архитектур различных нейронных сетей.
==См. также==
*[[:Примеры кода на Scala|Примеры кода на Scala]]
*[[:Примеры кода на R|Примеры кода на R]]<sup>[на 28.01.19 не создан]</sup>
*[[:Примеры кода на Java|Примеры кода на Java]]
==Примечания==
<references/>
[[Категория: Машинное обучение]] [[Категория: Примеры кода]]