我想用一个函数来绘制两个机器学习模型的学习曲线。
def Learning_Curves(estimator,data1=input_data,data2=output_data,cv=5,train_sizes=train_sizes): train_sizes,train_score,validation_score=learning_curve(estimator,data1,data2,cv=cv,train_sizes=train_sizes,shuffle=True) mean_train_score=-train_score.mean(axis=1) mean_validation_score=-validation_score(axis=1) sns.lineplot(train_sizes,mean_train_score) sns.lineplot(train_sizes,mean_validation_score) plt.ylim(0,40)plt.figure(figsize = (16,5)) for model,i in zip([LinearRegression(),RandomForestRegressor()],[1,2]): plt.subplot(1,2,i) Learning_Curves(model)
我不明白这个错误是什么意思。
回答:
你似乎忘记调用 validation_score.mean
了,在这里:
mean_validation_score = -validation_score(axis=1)
另外,你可以用这行代码替换原来的这行:
for model,i in zip([LinearRegression(),RandomForestRegressor()],[1,2]):
替换为
for i, model in enumerate((LinearRegression(),RandomForestRegressor()), start=1):