如何建立混淆矩阵?

问题描述 投票:1回答:1

我有以下代码,绘制了KNN算法的嵌套与非嵌套交叉验证。

# Number of random trials
NUM_TRIALS = 30

# Load the dataset

X_iris = X.values
y_iris = y

# Set up possible values of parameters to optimize over
p_grid = {"n_neighbors": [1, 5, 10]}

# We will use a Support Vector Classifier with "rbf" kernel
svm = KNeighborsClassifier()

# Arrays to store scores
non_nested_scores = np.zeros(NUM_TRIALS)
nested_scores = np.zeros(NUM_TRIALS)

# Loop for each trial
for i in range(NUM_TRIALS):

    # Choose cross-validation techniques for the inner and outer loops,
    # independently of the dataset.
    # E.g "GroupKFold", "LeaveOneOut", "LeaveOneGroupOut", etc.
    inner_cv = KFold(n_splits=4, shuffle=True, random_state=i)
    outer_cv = KFold(n_splits=4, shuffle=True, random_state=i)

    # Non_nested parameter search and scoring
    clf = GridSearchCV(estimator=svm, param_grid=p_grid, cv=inner_cv)
    clf.fit(X_iris, y_iris)
    non_nested_scores[i] = clf.best_score_

    # Nested CV with parameter optimization
    nested_score = cross_val_score(clf, X=X_iris, y=y_iris, cv=outer_cv)
    nested_scores[i] = nested_score.mean()

score_difference = non_nested_scores - nested_scores

preds=clf.best_estimator_.predict(X_test)
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, preds)
one, two, three, four,five,six,seven,eight,nine = confusion_matrix(y_test, preds).ravel()

我的问题是混淆矩阵绘图,我遇到了以下错误:

ValueError                                Traceback (most recent call last)
<ipython-input-22-13536688e18b> in <module>()
     45 from sklearn.metrics import confusion_matrix
     46 cm = confusion_matrix(y_test, preds)
---> 47 one, two, three, four,five,six,seven,eight,nine = confusion_matrix(y_test, preds).ravel()
     48 cm = [[one,two],[three,four],[five,six],[seven,eight],[nine,eight]]
     49 ax= plt.subplot()

ValueError: too many values to unpack (expected 9)

我不确定如何解决此问题。我的数据集中有9个目标变量,存储在y中。

[11 11 11 ... 33 33 33] #the target variables being : 11,12,13,21,22,23,31,32,33

这是我的特征数据集的标题:

     Duration  Grand Mean  Max Mean Activation
0           64  136.772461           178.593750
1           67  193.445196           258.515625
2           67  112.382929           145.765625

python machine-learning scikit-learn confusion-matrix
1个回答
0
投票

混淆矩阵由“ cm = confusion_matrix(y_test,preds)”构建,其中cm为9x9矩阵(因为目标变量中有9个不同的标签)。如果要绘制它,可以使用plot_confusion_matrix function。无需整理。如果您将其拆散,则9x9矩阵将转换为81个值,并且将其解压缩为赋值左侧的9个变量。这就是您收到“要解包的值太多(预期为9)”错误的原因。

© www.soinside.com 2019 - 2024. All rights reserved.