Python-библиотеки интерпретации моделей ML |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2019-10-07 20:00 Все эти библиотеки устанавливаются через Yellowbrick Yellowbrick — это расширение pip install yellowbrick Рассмотрим некоторые возможности на примере датасета распознания вин в import pandas as pd from sklearn import datasets wine_data = datasets.load_wine() df_wine = pd.DataFrame(wine_data.data,columns=wine_data.feature_names) df_wine['target'] = pd.Series(wine_data.target) Через from sklearn.model_selection import train_test_split X = df_wine.drop(['target'], axis=1) y = df_wine['target'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) Посмотрим на корреляции между признаками: from yellowbrick.features import Rank2D import matplotlib.pyplot as plt visualizer = Rank2D(algorithm="pearson", size=(1080, 720)) visualizer.fit_transform(X_train) visualizer.poof() Теперь подключим from yellowbrick.classifier import ClassificationReport from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier() visualizer = ClassificationReport(model, size=(1080, 720)) visualizer.fit(X_train, y_train) visualizer.score(X_test, y_test) visualizer.poof() ELI5 ELI5 — еще одна визуальная библиотека, удобная для устранения ошибок в моделях и для объяснения прогнозов. Она совместима с самыми популярными Python-библиотеками ML: import eli5 eli5.show_weights(model, feature_names = X.columns.tolist()) По умолчанию метод from eli5 import show_prediction show_prediction(model, X_train.iloc[1], feature_names = X.columns.tolist(), show_feature_values=True) LIME LIME (локально интерпретируемое объяснение, не зависящее от устройства модели) — пакет, используемый для интерпретации прогнозов тех или иных алгоритмов машинного обучения. Lime поддерживает объяснения для индивидуальных прогнозов широкого круга классификаторов. Встроена поддержка pip install lime Будем работать с нашей моделью. Сначала создадим интерпретатор. Он видит набор данных как массив. Имена признаков используются в модели, а имена классов в целевой переменной. import lime.lime_tabular explainer = lime.lime_tabular.LimeTabularExplainer(X_train.values, feature_names=X_train.columns.values.tolist(), class_names=y_train.unique()) Создадим лямбда-функцию, использующую модель для прогнозирования на основе имеющихся данных: predict_fn = lambda x: model.predict_proba(x).astype(float) Также используем интерпретатор для расшифровки прогноза. Результат приведён ниже. При помощи Lime можно создать визуализацию, отображающую влияние конкретных признаков на прогноз: exp = explainer.explain_instance(X_test.values[0], predict_fn, num_features=6) exp.show_in_notebook(show_all=False) MLxtend Библиотека MLxtend содержит ряд вспомогательных функций для машинного обучения. Например, для pip install mlxtend Необходимые пакеты представлены ниже: from mlxtend.plotting import plot_decision_regions from mlxtend.classifier import EnsembleVoteClassifier import matplotlib.gridspec as gridspec import itertoolsfrom sklearn import model_selection from sklearn.linear_model import LogisticRegression from sklearn.naive_bayes import GaussianNB from sklearn.ensemble import RandomForestClassifier Данная визуализация обрабатывает одновременно только два признака, поэтому создадим массив, который будет содержать признаки X_train_ml = X_train[['proline', 'color_intensity']].values y_train_ml = y_train.values Теперь создадим классификаторы и обучим их на тренировочных данных, чтобы получить визуализацию границ решений. Ниже показаны код и его вывод. clf1 = LogisticRegression(random_state=1) clf2 = RandomForestClassifier(random_state=1) clf3 = GaussianNB() eclf = EnsembleVoteClassifier(clfs=[clf1, clf2, clf3], weights=[1,1,1]) value=1.5 width=0.75 gs = gridspec.GridSpec(2,2) fig = plt.figure(figsize=(10,8)) labels = ['Logistic Regression', 'Random Forest', 'Naive Bayes', 'Ensemble'] for clf, lab, grd in zip([clf1, clf2, clf3, eclf], labels, itertools.product([0, 1], repeat=2)): clf.fit(X_train_ml, y_train_ml) ax = plt.subplot(gs[grd[0], grd[1]]) fig = plot_decision_regions(X=X_train_ml, y=y_train_ml, clf=clf) plt.title(lab) Читайте также:
Перевод статьи Rebecca Vickery: Python Libraries for Interpretable Machine Learning Источник: m.vk.com Комментарии: |
|