我正在编写一个代码,在body命令中我使用stratifiedKfold进行交叉验证。 因为在训练和验证集上得到关于得分的一些情节会很棒,所以我读到了运行learning_curve例程以进行绘图。 然后是这个奇怪的事情(或者我希望我错了):在learning_curve例程的选项中,我可以对分层K折叠进行交叉验证(例如,在参数中指定cv),但是对于我在主代码中定义的那个,它将是不同的,新的。 我找不到如何解决这个问题:我的想法是在正文中使用相同的分层Kfold的图。
-----主要代码-----
skf = StratifiedKFold(difficulty_list,10)
for train, test in skf:
X_train, X_test, y_train, y_test = X[train],X[test], y[train], y[test]
然后我想为这个给定的折叠调用验证学习曲线,但我只能投下以下
plotValidationCurve(regressor,X_train,y_train,item)
使用单独的方法绘制图:
def plotValidationCurve(estimator,X,y,item):
ml_method_list = ['AdaBoost','LASSO','Elastic Net','SVR','Random Forest','Gradient Boosting','RGF']
from sklearn.model_selection import learning_curve
from sklearn.model_selection import ShuffleSplit
fig = plt.figure()
plt.xlabel("Training examples")
plt.ylabel("Score")
train_sizes, train_scores, test_scores = learning_curve(estimator, X, y, train_sizes=np.linspace(0.05, 1.0, 20),cv=10)
如果通知我在这里指定了10层分层交叉验证,但与上面在skf中指定的不同。
有没有办法做到这一点?
答案 0 :(得分:0)
也许我解决了这个问题:如何将skf作为绘制学习曲线和设置参数的例程参数cv = skf?
像
这样的东西plotValidationCurve(regressor,X_train,y_train,item,skf)
然后
def plotValidationCurve(estimator,X,y,item):
...
train_sizes, train_scores, test_scores = learning_curve(estimator, X, y, train_sizes=np.linspace(0.05, 1.0, 20),cv=skf)