Python sklearn中K-折叠交叉验证中每个折叠的预测值
我使用python sklearn对数据集执行了10次交叉验证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
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@KrishiHresult
给出分数,而y\u pred
给出预测。请查查。我想你不明白我的问题y_pred
返回所有预测。我想分别打印每个折叠的预测。@KrishiH将cv
作为参数添加到cross\u val\u predict
中,给出预测。谢谢好办法!我可以知道在这种情况下,是否可以提取错误分类或分类实例的真实索引?我找不到这个问题的答案!是否可以使用kfold.split(X,y,groups=None)?或者任何类似示例索引之类的解决方法?请看一下这个问题。。。