猿问

sklearn LogisticRegressionCV是否将所有数据用于最终模型

我想知道如何计算sklearn中LogisticRegressionCV的最终模型(即决策边界)。所以说我有一些Xdata和ylabel这样


Xdata # shape of this is (n_samples,n_features)

ylabels # shape of this is (n_samples,), and it is binary

现在我跑


from sklearn.linear_model import LogisticRegressionCV

clf = LogisticRegressionCV(Cs=[1.0],cv=5)

clf.fit(Xdata,ylabels)

这只是在CV中查看一个正则化参数和5倍。因此,clf.scores_将是一个具有一个键的字典,该键的值是形状为(n_folds,1)的数组。通过这五折,您可以更好地了解模型的性能。


但是,我对您从中获得的信息感到困惑clf.coef_(并且我假设中的参数clf.coef_是在中使用的参数clf.predict)。我认为有几种选择:

  1. 输入的参数clf.coef_来自在所有数据上训练模型

  2. 的参数clf.coef_来自最佳得分

  3. 中的参数以clf.coef_某种方式在折痕处平均。

我以为这是一个重复的问题,但是对于我自己而言,我无法在sklearn文档或LogisticRegressionCV的源代码中找到简单的在线答案。


jeck猫
浏览 194回答 2
2回答

慕勒3428872

refit=True默认情况下,您具有该参数。在文档上,您可以阅读:如果设置为“真”,则将所有折叠的分数平均,并获取与最佳分数对应的系数和C,并使用这些参数进行最终的调整。否则,将对应于跨折最佳得分的系数,截距和C取平均。因此,如果refit=True使用所有数据重新训练CV模型。当说使用这些参数完成最后的改装时,它是在谈论C正则化参数。因此,它使用在K折中给出最佳平均得分的C。当refit=False它为您检索到交叉验证中的最佳模型时。因此,如果您训练了5折,您将获得模型(coeff + C +截距),它是根据4折数据训练的,因此在其折叠测试集上得分最高。我同意这里的文档不是很清楚,但是对C值和系数取平均值并没有多大意义。
随时随地看视频慕课网APP

相关分类

Python
我要回答