我是机器学习的新手。最近,我学会了如何计算confusion_matrix
Test set
的{{1}}。但我不知道,如何计算KNN Classification
confusion_matrix
的{{1}}?
如何从以下代码计算Training set
KNN Classification
confusion_matrix
的{{1}}?
以下代码用于计算Training set
的{{1}}:
KNN Classification
对于k-fold交叉验证:
我也在尝试使用confusion_matrix
查找Test set
的{{1}}。
我对此行# Split test and train data
import numpy as np
from sklearn.model_selection import train_test_split
X = np.array(dataset.ix[:, 1:10])
y = np.array(dataset['benign_malignant'])
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
#Define Classifier
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors = 5, metric = 'minkowski', p = 2)
knn.fit(X_train, y_train)
# Predicting the Test set results
y_pred = knn.predict(X_test)
# Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred) # Calulate Confusion matrix for test set.
感到困惑。
我是否会更改此行confusion_matrix
?
我应该在哪里更改Training set
以计算k-fold cross-validation
的{{1}}?
knn.fit(X_train, y_train)
答案 0 :(得分:3)
你不必做太多改变
# Predicting the train set results
y_train_pred = knn.predict(X_train)
cm_train = confusion_matrix(y_train, y_train_pred)
此处不使用X_test
我们使用X_train
进行分类,然后使用训练数据集和实际类的预测类生成分类矩阵。
分类矩阵背后的想法主要是找出分为四类的分类数(如果y
是二进制的) -
因此,只要您有两组 - 预测和实际,您就可以创建混淆矩阵。你所要做的就是预测类,并使用实际的类来获得混淆矩阵。
修改强>
在交叉验证部分,您可以添加一行y_predict_train = clf.predict(X_train)
来计算每次迭代的混淆矩阵。您可以这样做,因为在循环中,您每次都初始化clf
,这基本上意味着重置您的模型。
此外,在您的代码中,您每次都会找到混淆矩阵,但您不会将其存储在任何位置。最后,你将只剩下最后一个测试集的厘米。