计算训练集的confusion_matrix

时间:2017-08-24 06:56:03

标签: python machine-learning cross-validation knn

我是机器学习的新手。最近,我学会了如何计算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)

1 个答案:

答案 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是二进制的) -

  1. 预测为真,但实际上是假的
  2. 预测为真,实际为真
  3. 预测为False但实际上是True
  4. 预测为假,实际上为假
  5. 因此,只要您有两组 - 预测和实际,您就可以创建混淆矩阵。你所要做的就是预测类,并使用实际的类来获得混淆矩阵。

    修改

    在交叉验证部分,您可以添加一行y_predict_train = clf.predict(X_train)来计算每次迭代的混淆矩阵。您可以这样做,因为在循环中,您每次都初始化clf,这基本上意味着重置您的模型。

    此外,在您的代码中,您每次都会找到混淆矩阵,但您不会将其存储在任何位置。最后,你将只剩下最后一个测试集的厘米。