我的模型生成的学习曲线如图所示。这些曲线正常吗?我是初学者,在网上看到随着训练样本的增加,训练分数应该先下降然后趋于稳定。但在这里,训练分数是增加然后趋于稳定的。因此我想知道这是否表明我的代码有bug或者我的输入数据有问题?
我已经找出了我的代码的问题所在。
train_sizes , train_accuracy , cv_accuracy = lc(linear_model.LogisticRegression(solver='lbfgs',penalty='l2',multi_class='ovr'),trainData,multiclass_response_train,train_sizes=np.array([0.1,0.33,0.5,0.66,1.0]),cv=5)
我之前没有为逻辑回归输入正则化参数。
但现在,
train_sizes , train_accuracy , cv_accuracy = lc(linear_model.LogisticRegression(C=1000,solver='lbfgs',penalty='l2',multi_class='ovr'),trainData,multiclass_response_train,train_sizes=np.array([0.1,0.33,0.5,0.66,1.0]),cv=5)
学习曲线看起来正常了。
有人能告诉我这是为什么吗?即使用默认的正则化项时训练分数增加,而使用较低的正则化时分数减少?
数据详情:10个类别。不同大小的图像。(数字分类 – 街景数字)
回答:
基于Alex的回答来看,你的模型默认的正则化参数可能导致数据有些欠拟合,因为当你放松正则化后,你看到了更合适的学习曲线。对于欠拟合的模型,增加样本数量并没有用。
至于你担心为什么在第一种情况下训练分数增加而不是减少——这可能是你使用的多类别数据的结果。在训练样本较少的情况下,每个类别的图像数量也较少(因为lc
尝试在交叉验证的每折中保持相同的类别分布),所以在有正则化的情况下(如果你把C=1称为正则化的话),你的模型可能更难准确地猜出某些类别。