sklearn 中 learning_curve 函数中估计器参数的值应该是多少?

Posted

技术标签:

【中文标题】sklearn 中 learning_curve 函数中估计器参数的值应该是多少?【英文标题】:what should be the value of the estimator parameter in learning_curve function in sklearn? 【发布时间】:2018-12-11 15:14:51 【问题描述】:

我正在尝试制作学习曲线,我想使用的算法是 knn 算法。为此,估计器的值应该是什么。它的可能值或选项不在文档中(我不确定它是否应该在那里)。

这是我的代码-

features = ['age','sex','cp','trestbps','chol','fbs','restecg','thalach','exang','oldpeak','slope','ca','thal']
target = 'num'

train_size, train_scores, validation_scores = learning_curve(estimator = KNN(), x=dataset[features], y=dataset[target], train_size=train_sizes, cv=5, scoring='confusion_matrix')

错误是 - KNN() 未定义(原因很明显)。但我的问题是,如果我想使用 knn 算法,它的价值应该是多少。

【问题讨论】:

我不太明白你所说的“它应该是什么价值”是什么意思? 使用最近邻算法的估计器参数的值应该是多少 使用K最近邻算法的估计器参数值应该是多少 那么值完全取决于您的任务和数据 【参考方案1】:

来自learning curve docs:

estimator:实现“fit”和“predict”方法的对象类型

所以,如果你在回归设置中,你应该使用

from sklearn.neighbors import KNeighborsRegressor
# define the no. of nearest neighbors k
train_size, train_scores, validation_scores = learning_curve(estimator = KNeighborsRegressor(n_neighbors=k), [...])

如果你在分类设置中,你应该使用

from sklearn.neighbors import KNeighborsClassifier
# define the no. of nearest neighbors k
train_size, train_scores, validation_scores = learning_curve(estimator = KNeighborsClassifier(n_neighbors=k), [...])

当然,在这两种情况下,您还应该定义最近邻的数量k

一般的想法是,在 estimator 参数中,您可以使用任何实现 fitpredist 方法的 scikit-learn 可用算法,如文档中明确提到的(上面提供的链接)。

【讨论】:

以上是关于sklearn 中 learning_curve 函数中估计器参数的值应该是多少?的主要内容,如果未能解决你的问题,请参考以下文章

python learning_curve函数

sklearn中模型评估和预测

learning_curve没有绘制超过200万条记录

数据分析——交叉验证

sklearn中OneHotEncoder

sklearn的PCA