Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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 sklearn中K-折叠交叉验证中每个折叠的预测值_Python_Scikit Learn_Regression_Cross Validation - Fatal编程技术网

Python sklearn中K-折叠交叉验证中每个折叠的预测值

Python sklearn中K-折叠交叉验证中每个折叠的预测值,python,scikit-learn,regression,cross-validation,Python,Scikit Learn,Regression,Cross Validation,我使用python sklearn对数据集执行了10次交叉验证 result = cross_val_score(best_svr, X, y, cv=10, scoring='r2') print(result.mean()) 我已经能够得到r2分数的平均值作为最终结果。我想知道是否有办法打印出每个折叠的预测值(在本例中为10组值)。我相信您正在寻找函数。要打印每个折叠的预测 for k in range(2,10): result = cross_val_score(best_sv

我使用python sklearn对数据集执行了10次交叉验证

result = cross_val_score(best_svr, X, y, cv=10, scoring='r2')
print(result.mean())

我已经能够得到r2分数的平均值作为最终结果。我想知道是否有办法打印出每个折叠的预测值(在本例中为10组值)。

我相信您正在寻找函数。

要打印每个折叠的预测

for k in range(2,10):
    result = cross_val_score(best_svr, X, y, cv=k, scoring='r2')
    print(k, result.mean())
    y_pred = cross_val_predict(best_svr, X, y, cv=k)
    print(y_pred)

一个迟来的答案,只是为了添加到@jh314,
cross\u val\u predict
确实返回了所有预测,但我们不知道每个预测属于哪个层次。为此,我们需要提供折叠,而不是整数:

import seaborn as sns
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_predict, StratifiedKFold 

iris = sns.load_dataset('iris')
X=iris.iloc[:,:4]
y=(iris['species'] == "versicolor").astype('int')

rfc = RandomForestClassifier()
skf = StratifiedKFold(n_splits=10,random_state=111,shuffle=True)

pred = cross_val_predict(rfc, X, y, cv=skf)
现在我们迭代Kfold对象,并得出对应于每个褶皱的预测:

fold_pred = [pred[j] for i, j in skf.split(X,y)]
fold_pred

[array([0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0]),
 array([0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0]),
 array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1]),
 array([0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0]),
 array([0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0]),
 array([0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0]),
 array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]),
 array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]),
 array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0]),
 array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0])]

对谢谢我想知道我是否能分别打印出每个褶皱的结果。我知道它对所有褶皱都有预测。我想知道是否有一种方法可以分别打印每个折叠的结果。例如,第一次折叠:{……},第二次折叠:{……}……等等。这执行与
print(result)
相同的功能。我想为每一个单独打印它们fold@KrishiH
result
给出分数,而
y\u pred
给出预测。请查查。我想你不明白我的问题
y_pred
返回所有预测。我想分别打印每个折叠的预测。@KrishiH将
cv
作为参数添加到
cross\u val\u predict
中,给出预测。谢谢好办法!我可以知道在这种情况下,是否可以提取错误分类或分类实例的真实索引?我找不到这个问题的答案!是否可以使用kfold.split(X,y,groups=None)?或者任何类似示例索引之类的解决方法?请看一下这个问题。。。