Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 显示混淆矩阵中的错误分类数字_Python 3.x_Scikit Learn - Fatal编程技术网

Python 3.x 显示混淆矩阵中的错误分类数字

Python 3.x 显示混淆矩阵中的错误分类数字,python-3.x,scikit-learn,Python 3.x,Scikit Learn,我编写了一个函数来查找模型的混淆矩阵: NN_model = KNeighborsClassifier(n_neighbors=1) NN_model.fit(mini_train_data, mini_train_labels) # Create the confusion matrix for the dev data confusion = confusion_matrix(dev_labels, NN_model.predict(dev_data)) print(confusion)

我编写了一个函数来查找模型的混淆矩阵:

NN_model = KNeighborsClassifier(n_neighbors=1)
NN_model.fit(mini_train_data, mini_train_labels)
# Create the confusion matrix for the dev data
confusion = confusion_matrix(dev_labels, NN_model.predict(dev_data))
print(confusion)

但我在显示5位数以上的图像时遇到了问题,这些图像经常与其他图像混淆。但是当我尝试下面的代码时,我没有得到预期的结果

index = 0
misclassifiedIndexes = []
for label, predict in zip(dev_labels, predictions):
     if label != predict: 
        misclassifiedIndexes.append(index)
        index +=1

plt.figure(figsize=(20,4))
for plotIndex, badIndex in enumerate(misclassifiedIndexes[0:5]):
    plt.subplot(1, 5, plotIndex + 1)
    plt.imshow(np.reshape(dev_data[badIndex], (28,28)), cmap=plt.cm.gray)
    plt.title('Predict: {}, Actual: {}'.format(predictions[badIndex], dev_labels[badIndex]), fontsize = 15)


你能看看我的代码出了什么问题吗?谢谢大家!

因此,我无法处理您的代码。因此,我在这里提供了一个可复制的代码

您可以在预测和实际值之间的布尔比较中使用
np.where

试试这个例子:

从sklearn.com导入KNeighborsClassifier
从sklearn.dataset导入load_数字
从sklearn.model\u选择导入列车\u测试\u拆分
十、 y=加载数字(返回X=真)
X_系列,X_测试,y_系列,y_测试=系列测试分割(X,y,测试尺寸=0.4)
NN_模型=Kneighbors分类器(n_邻居=1)
NN_模型拟合(X_序列,y_序列)
#为dev数据创建混淆矩阵
从sklearn.metrics导入混淆矩阵
预测=NN_模型。预测(X_检验)
混淆=混淆矩阵(y_测试,预测)
将matplotlib.pyplot作为plt导入
误分类指数=np。其中(y_检验!=预测)[0]
图,ax=plt.子批次(4,3,figsize=(15,8))
ax=ax.ravel()
对于i,枚举中的badIndex(误分类索引):
ax[i].imshow(np.重塑(X_检验[badIndex],(8,8)),cmap=plt.cm.gray)
ax[i].set_title(f'Predict:{predicts[badeindex]},'
f'Actual:{y_测试[badIndex]}',fontsize=10)
ax[i].set(frame_on=False)
ax[i]。轴(“关闭”)
打印框(假)
打印轴(“关闭”)

因此,我不能对您的代码提出异议。因此,我在这里提供了一个可复制的代码

您可以在预测和实际值之间的布尔比较中使用
np.where

试试这个例子:

从sklearn.com导入KNeighborsClassifier
从sklearn.dataset导入load_数字
从sklearn.model\u选择导入列车\u测试\u拆分
十、 y=加载数字(返回X=真)
X_系列,X_测试,y_系列,y_测试=系列测试分割(X,y,测试尺寸=0.4)
NN_模型=Kneighbors分类器(n_邻居=1)
NN_模型拟合(X_序列,y_序列)
#为dev数据创建混淆矩阵
从sklearn.metrics导入混淆矩阵
预测=NN_模型。预测(X_检验)
混淆=混淆矩阵(y_测试,预测)
将matplotlib.pyplot作为plt导入
误分类指数=np。其中(y_检验!=预测)[0]
图,ax=plt.子批次(4,3,figsize=(15,8))
ax=ax.ravel()
对于i,枚举中的badIndex(误分类索引):
ax[i].imshow(np.重塑(X_检验[badIndex],(8,8)),cmap=plt.cm.gray)
ax[i].set_title(f'Predict:{predicts[badeindex]},'
f'Actual:{y_测试[badIndex]}',fontsize=10)
ax[i].set(frame_on=False)
ax[i]。轴(“关闭”)
打印框(假)
打印轴(“关闭”)