我们可以在 Yellowbrick 可视化中使用 numpy 数组混淆矩阵吗
Can we use numpy array confusion matrix in Yellowbrick visualization
我对机器学习模型可视化 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()
我不想使用 yellowbrick 拟合模型并获取混淆矩阵(如果我已经从 sklearn 获得混淆矩阵)。
有没有办法使用 yellowbrick 来做到这一点?
您可以将拟合模型传入 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()
我对机器学习模型可视化 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()
我不想使用 yellowbrick 拟合模型并获取混淆矩阵(如果我已经从 sklearn 获得混淆矩阵)。
有没有办法使用 yellowbrick 来做到这一点?
您可以将拟合模型传入 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()