1

我对机器学习模型的可视化 Yellowbric 感到很兴奋,并希望将混淆矩阵可视化。

我已经使用 scikit learn 使用 LOF 算法获得了混淆(这在 Yellowbrick 中没有实现)

显然,yellowbrick 需要模型,它适合自己的模型来训练和使用测试来获得输出,并为我们提供可视化图。

现在,我的问题是,如果我已经有输出,我可以使用 Yellowbrick 来实现其出色的可视化吗?

示例:
假设我已经有混淆矩阵

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

我可以做类似的事情:

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

这是官方示例: https ://www.scikit-yb.org/en/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 获得了混淆矩阵,我不想使用 Yellowbrick 来拟合模型并获取混淆矩阵。

有没有办法使用黄砖做到这一点?

4

1 回答 1

3

您可以将拟合模型传递到 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()
于 2019-10-16T12:40:48.563 回答