如何解决是否可以在cross_val_score中使用与cross_val_score中相同的k折?
嗨,如果我们执行以下操作来计算交叉验证的准确性:
cv_acc = cross_val_score(model,X_train,y_train,cv=5,scoring='accuracy')
是否可以使用对cross_val_score
中k折的相同输入来估计y预测并创建一个混淆矩阵(如下所示)?
y_pred = cross_val_predict(model,cv=5)
conf_mat = confusion_matrix(y_test,y_pred)
是否有一种方法可以存储如何在cross_val_score
中精确地分解k折,以确保可比的混淆矩阵?
干杯:)
解决方法
以下方法应该起作用:
from sklearn.model_selection import KFold,cross_val_score,cross_val_predict
k_folds = KFold(n_splits=5)
splits = list(k_folds.split(X_train,y_train)) # note list here as k_folds.split is a one-off generator
cv_acc = cross_val_score(model,X_train,y_train,cv=splits,scoring='accuracy')
y_pred = cross_val_predict(model,cv=splits)
有关更多信息,请参见cross_val_score和cross_val_predict的文档。
完整的示例:
from sklearn.model_selection import KFold,cross_val_predict
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
k_folds = KFold(n_splits=5)
X_train,y_train = make_classification(1000)
splits = list(k_folds.split(X_train,y_train))
model = LogisticRegression()
cv_acc = cross_val_score(model,cv=splits)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。