Это первая часть из двух статей о визуализации всего в ML, в которых мы будем визуализировать данные, модели ML, выполнить настройку гиперпараметров с помощью визуализации и визуализировать результаты. В этой части мы визуализируем данные и модели машинного обучения.
Недавно я писал исследовательскую работу с использованием машинного обучения, и одна из самых важных вещей в исследовательской работе - это цифры и визуализации. Мы можем визуализировать наши данные, прогнозы, полученные с помощью различных алгоритмов машинного обучения, и конечные результаты. Это также полезно для лучшего понимания наших данных и помогает нам выбрать подходящие классификаторы для нашей работы. В этом посте мы рассматриваем визуализации для машинного обучения с использованием Yellowbrick и Mlxtend.
Что такое Yellowbrick?
Согласно документации, Yellowbrick расширяет Scikit-Learn API, чтобы упростить выбор модели и настройку гиперпараметров. Под капотом он использует Matplotlib ». Используя Yellowbrick, мы можем выполнять визуализацию функций, классификацию, регрессию, кластеризацию, выбор модели, целевую и даже текстовую визуализацию. Мы даже можем визуализировать настройку гиперпараметров, используя это, чтобы получить наилучшие гиперпараметры для данной задачи. Подробнее см. Официальную документацию.
Yellowbrick требует python 3.4 или выше, scikit-learn 0.20 или выше и matplotlib версии 3.0.1 или выше, чтобы работать лучше всего. Установка с помощью pip
$ pip install yellowbrick
Установка с помощью conda для anaconda
conda install -c districtdatalabs yellowbrick
Первичный интерфейс Yellowbrick - это визуализатор, который представляет собой объект оценки scikit-learn, который учится на данных для создания визуализации. Визуализатор импортируется, настраивается и настраивается с помощью fit () для разработки визуализации. API визуализатора состоит из трех основных методов:
- draw (): для добавления визуальных элементов к оси.
- finalize (): для добавления более мелких деталей, таких как легенды, заголовки, оси, метки и т. д.
- poof (): чтобы отобразить визуализатор или сохранить его на диск.
Что такое Mlxtend
Mlxtend - это библиотека полезных инструментов для науки о данных на языке Python, которая может использоваться для построения различных алгоритмов машинного обучения и ансамблевого обучения (ансамблевое обучение - это метод объединения различных алгоритмов машинного обучения с целью уменьшения дисперсии и улучшения прогнозов).
Установка с помощью pip
pip install mlxtend
Установка с помощью conda
conda install mlxtend --channel conda-forge
Визуализация данных с помощью Yellowbrick
Визуализация данных - это демонстрация получения данных (информации) и помещения их в визуальную среду, например, в руководство или диаграмму. Визуализация данных особенно важна, когда дело касается больших данных и проектов анализа данных. Они используются для визуализации экземпляров в пространстве данных, чтобы определить основные моменты, которые могут повлиять на последующую подгонку. Используя Yellowbrick, мы можем выполнять визуализатор рангов, проекцию PCA, визуализацию множества, среди прочего. В своей статье я использовал PCA и визуализацию многообразия, которые обсуждаются ниже.
- PCA использует ортагональное преобразование, чтобы разложить данные более высокого измерения на два или три измерения, чтобы нанести каждый экземпляр на диаграмму рассеяния. This - отличная статья, чтобы узнать больше об этом.
from yellowbrick.features.pca import PCADecomposition from yellowbrick.draw import manual_legend import matplotlib.pyplot as plt def visual_pca(x_train, y_train): plt.figure() colors = np.array(['b' if yi else 'r' for yi in y_train]) visualizer = PCADecomposition(scale=True, color=colors) visualizer.fit_transform(x_train, y_train) manual_legend(visualizer, ('real', 'forged'), ('b', 'r')) visualizer.poof(outpath="pca.png") plt.close()
- В визуализаторе Manifold используется многогранное обучение, чтобы уменьшить множество измерений до двух. Коллекторы захватывают нелинейные структуры, поскольку они используют подход ближайшего соседа. В статье использовалось множество различных алгоритмов, имеющих разные свойства и временную сложность, таких как lle, hessian, isomap, spectral, tsne и т. Д. Lle и isomap, которые будут рассмотрены ниже.
- Локально линейное встраивание (LLE) выполняет проекцию данных меньшей размерности и сохраняет расстояния в пределах локальных окрестностей. Это похоже на серию локальных анализов главных компонентов, которые сравниваются в глобальном масштабе, чтобы найти лучшее нелинейное вложение.
from yellowbrick.features.manifold import Manifold import matplotlib.pyplot as plt def visual_tsne(x_train, y_train): plt.figure() y = np.array(['real' if yi else 'forged' for yi in y_train]) visualizer = Manifold(manifold='lle', target='discrete') visualizer.fit_transform(x_train, y) visualizer.finalize() visualizer.poof(outpath="lle.png") plt.close()
2. Изокарта - это вложение меньшей размерности, которое поддерживает геодезические расстояния между всеми точками. Это расширение ядра PCA.
from yellowbrick.features.manifold import Manifold import matplotlib.pyplot as plt def visual_isomap(x_train, y_train): plt.figure() y = np.array(['real' if yi else 'forged' for yi in y_train]) visualizer = Manifold(manifold='isomap', target='discrete') visualizer.fit(x_train, y) visualizer.poof(outpath="isomap.png") plt.close()
Визуализация прогнозов модели машинного обучения с помощью Mlxtend
Визуализация моделей машинного обучения помогает нам ясно увидеть, как работает наша модель, и также дает отличные показатели 😁. Замечательно глубоко понять, как разные алгоритмы по-разному классифицируют границы, и при достаточной практике мы сможем затем увидеть данные и понять, какой классификатор будет работать лучше всего. Мы будем визуализировать Extra Trees, KNN, Random Forest и SVM. Чтобы узнать больше о SVM, KNN и Extra Trees and Random Forest нажмите здесь. Мы также создадим классификатор ансамбля, используя mlxtend, объединив все эти прогнозы.
У Mlxtend есть недостаток, заключающийся в том, что мы можем построить связь между любыми двумя функциями только за один раз, а остальные функции должны быть переданы как значения-заполнители. Этот вопрос о переполнении стека точно описывает это. Однако мы можем выполнить уменьшение размеров с помощью PCA, чтобы уменьшить размеры до двух перед передачей в mlxtend ‘plot_decision_regions`, или вы можете передать значения-заполнители, как указано в ответе на этот вопрос о stackoverflow.
from mlxtend.classifier import EnsembleVoteClassifier from mlxtend.plotting import plot_decision_regions import matplotlib.pyplot as plt from sklearn.decomposition import PCA def visual_ml(clf1, clf2, clf3, clf4, X, y): y = np.array(y, dtype = np.uint) pca = PCA(n_components = 2) X = pca.fit_transform(X) eclf = EnsembleVoteClassifier(clfs = [clf1, clf2, clf3, clf4], verbose = 2) labels = ['KNN', 'Extra Trees', 'SVM', 'Random Forest', 'ensemble'] for clf, lab in zip([clf1, clf2, clf3, clf4, eclf], labels): clf.fit(X, y) plt.figure() fig = plot_decision_regions(X=X, y=y, clf=clf) plt.title(lab) plt.show() plt.close()
Это для части 1. Во второй части мы визуализируем настройку гиперпараметров и результаты.