Можем ли мы использовать непонятную матрицу путаницы в визуализации Yellowbrick - PullRequest
0 голосов
/ 12 октября 2019

Я был взволнован визуализацией моделей машинного обучения yellowbric и хотел визуализировать матрицу путаницы.

Я получил путаницу, используя алгоритм LOF с использованием scikit learn (это не реализовано в желтом кирпиче)

Очевидно, что желтому кирпичу нужна модель, и она подходит для модели обучения и использует тест для получения выходных данных и дает нам график визуализации.

Теперь мой вопрос: если у меня уже есть выход, могу ли я использовать желтый кирпич? для его удивительной визуализации?

Пример:
Допустим, у меня уже есть матрица путаницы

cm = np.array([[56750,   114],
              [   95,     3]])

Могу ли я сделать что-то вроде:

from yellowbrick.classifier import ConfusionMatrix
cm1 = ConfusionMatrix(cm)
cm1.show()

Вотофициальный пример: https://www.scikit -yb.org / ru / latest / api / classifier / confusion_matrix.html

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split as tts
from sklearn.linear_model import LogisticRegression
from yellowbrick.classifier import ConfusionMatrix

iris = load_iris()
X = iris.data
y = iris.target
classes = iris.target_names

X_train, X_test, y_train, y_test = tts(X, y, test_size=0.2)

model = LogisticRegression(multi_class="auto", solver="liblinear")

iris_cm = ConfusionMatrix(
    model, classes=classes,
    label_encoder={0: 'setosa', 1: 'versicolor', 2: 'virginica'}
)

iris_cm.fit(X_train, y_train)
iris_cm.score(X_test, y_test)

iris_cm.show()

Я не хочу соответствовать модели с использованием желтого кирпича и получитьматрица путаницы, если она у меня уже есть из sklearn.

Есть ли способ сделать это с помощью желтого кирпича?

1 Ответ

3 голосов
/ 16 октября 2019

Вы можете передать установленную модель в Yellowbrick. Последняя версия Yellowbrick проверяет, установлена ​​ли уже модель, и не будет изменять данные, передаваемые ей, если подобранная модель передается в визуализатор. Измените ваш код следующим образом:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split as tts
from sklearn.linear_model import LogisticRegression
from yellowbrick.classifier import ConfusionMatrix

iris = load_iris()
X = iris.data
y = iris.target
classes = iris.target_names

X_train, X_test, y_train, y_test = tts(X, y, test_size=0.2)

model = LogisticRegression(multi_class="auto", solver="liblinear")
model.fit(X_train, y_train)

iris_cm = ConfusionMatrix(
    model, classes=classes,
    label_encoder={0: 'setosa', 1: 'versicolor', 2: 'virginica'}
)

iris_cm.fit(X_train, y_train)
iris_cm.score(X_test, y_test)

iris_cm.show()
...