微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

kfold 中的真实值和预测值

如何解决kfold 中的真实值和预测值

我想要一个建议!

我使用 kfold 交叉验证来拆分我的数据集并评估模型的分类问题。

我需要知道是否有办法打印出真实值以及每个折叠的相应预测值,以便我可以看到模型是什么在 kfold 的每次迭代中进行预测。 我将尝试在一个小数据集中实现它,以便弄清楚它是如何工作的,然后将其放入实际代码中。

搜索了这个网站,发现了另一个与我类似的问题,但这并没有真正的帮助

我可能应该将这些值放在一个数组中,并使用“for”函数进行循环并使用“cross_val_predict”函数来获得预测。

有人可以帮忙吗?

解决方法

这些是我的测试代码中的一些部分,用于具有 20 个样本和 2 个特征的二元分类:

         #Splitting the dataset into the Training set and Test set

输入

:for train_index,test_index in skf.split(X,y):
    print("TRAIN:",train_index,"TEST:",test_index)
    X_train,X_test = X[train_index],X[test_index]
    y_train,y_test = y[train_index],y[test_index]

Output:
 TRAIN: [ 2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19] TEST: [0 1]
TRAIN: [ 0  1  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19] TEST: [2 3]
TRAIN: [ 0  1  2  3  6  7  8  9 10 11 12 13 14 15 16 17 18 19] TEST: [4 5]
TRAIN: [ 0  1  2  3  4  5  8  9 10 11 12 13 14 15 16 17 18 19] TEST: [6 7]
TRAIN: [ 0  1  2  3  4  5  6  7 10 11 12 13 14 15 16 17 18 19] TEST: [8 9]
TRAIN: [ 0  1  2  3  4  5  6  7  8  9 12 13 14 15 16 17 18 19] TEST: [10 11]
TRAIN: [ 0  1  2  3  4  5  6  7  8  9 10 11 14 15 16 17 18 19] TEST: [12 13]
TRAIN: [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 16 17 18 19] TEST: [14 15]
TRAIN: [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 18 19] TEST: [16 17]
TRAIN: [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17] TEST: [18 19]

#在训练集上训练 SVM 模型

from sklearn.svm import SVC
classifier=SVC(kernel='linear',random_state=0)
classifier.fit(X_train,y_train)
             

#预测测试集结果

Input:  y_pred = classifier.predict(X_test)     print(np.concatenate((y_pred.reshape(len(y_pred),1),y_test.reshape(len(y_test),1)),1))
Output: [[1 1]
         [1 0]]

如何在 kfold 的每次迭代中将实际值与预测值相邻,作为#Predicting the Test set results 中的输出?

,

我认为这应该给你你想要的。您不需要明确地通过索引,因为 cross_val_predict 为您提供所有点在验证集中时的预测值(它会自动处理 k 折拆分)。

from sklearn.svm import SVC
from sklearn.model_selection import KFold,cross_val_predict

X = #features
y = #labels

classifier = SVC(kernel='linear',random_state=0)
classifier.fit(X,y)

kfold = KFold(n_splits=10)

y_pred = cross_val_predict(classifier,X,y,cv=kfold)

for i in range(len(y)):
   print('Predicted value = ' + str(y_pred[i]))
   print('Real value = ' + str(y[i]))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。