sklearn逻辑回归上的DataConversionWarning

Posted

技术标签:

【中文标题】sklearn逻辑回归上的DataConversionWarning【英文标题】:DataConversionWarning on sklearn Logistic Regression 【发布时间】:2019-07-26 10:57:23 【问题描述】:

我正在尝试在下面的 sklearn 中执行逻辑回归:

from sklearn.linear_model import LogisticRegression

classifier = LogisticRegression(random_state = 0)

mod_data2 = mod_data.copy()

classifier.fit(mod_data2[['prob1_norm', 'prob2_norm']].values.reshape(-1,2), mod_data2['Success'].values.reshape(-1,1))

但它给了我错误信息:

 DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  y = column_or_1d(y, warn=True)

我尝试在输入数据的末尾使用 .ravel(),但它告诉我尺寸错误。

谢谢

【问题讨论】:

你试过mod_data2['Success'].values.ravel() 吗? 是的,我试过了,它告诉我 ValueError: Expected 2D array, got 1D array instead: array=[0.46062633 0.39853439 0.46062633 ... 0.21442516 0.06186648 0.02173996],而不是仅仅给我一个警告。如果您的数据具有单个特征,则使用 array.reshape(-1, 1) 重塑您的数据,如果它包含单个样本,则使用 array.reshape(1, -1)。 【参考方案1】:

df.squeeze() 应该可以工作。它将数据框转换为系列,当我使用它时,警告转换消失了

y = mod_data2['Success'].squeeze()

【讨论】:

以上是关于sklearn逻辑回归上的DataConversionWarning的主要内容,如果未能解决你的问题,请参考以下文章

解释 sklearn 中的逻辑回归特征系数值

Python 中的逻辑回归和交叉验证(使用 sklearn)

获取 sklearn 逻辑回归的边际效应

为啥 sklearn 逻辑回归正则化权重和截距?

为啥我自己的逻辑回归实现与 sklearn 不同?

逻辑回归 sklearn - 训练和应用模型