我无法将逻辑回归拟合到模型中。如何解决这个问题?

Posted

技术标签:

【中文标题】我无法将逻辑回归拟合到模型中。如何解决这个问题?【英文标题】:I can't fit Logistic Regression into model. How to solve this? 【发布时间】:2021-10-28 10:11:36 【问题描述】:

我在 Google Colab 中运行了这段代码:

from sklearn.metrics import confusion_matrix

# Initialize logreg model
logreg = LogisticRegression()

# Fit the model with data
logreg.fit(X_train, y_train)

# Predict model
y_pred = logreg.predict(X_test)

# Evaluate model using confusion matrix
cnf_matrix = confusion_matrix(y_test,y_pred)
print('Confusion Matrix:\n', cnf_matrix)

它给了我这个输出

<ipython-input-73-2bdb42bd97ad> in <module>()
      6 
      7 # Fit the model with data
----> 8 logreg.fit(X_train, y_train)
      9 
     10 # Predict model

1 frames
/usr/local/lib/python3.7/dist-packages/sklearn/utils/multiclass.py in check_classification_targets(y)
    167     if y_type not in ['binary', 'multiclass', 'multiclass-multioutput',
    168                       'multilabel-indicator', 'multilabel-sequences']:
--> 169         raise ValueError("Unknown label type: %r" % y_type)
    170 
    171 

ValueError: Unknown label type: 'unknown'

如何解决?

我的 X 变量是数字列,y 变量是标签列。我试过这段代码LogisticRegression().fit(X_train, y_train),但它也返回了错误。

【问题讨论】:

向我们展示您的 y_train 看起来如何 print(type(y_train)) print(y_train[0:10]) @Vlad 2606 False 57228 False 8382 True 60281 True 48432 False 2510 False 29712 True 68162 True 60530 True 46682 True Name: is_churn, dtype: object @Vlad 是 y_train 值的问题? 在将数据集输入模型之前清理数据集几乎总是一个好主意。快速尝试删除缺失值和重复项,看看问题是否仍然存在。 我认为问题在于您的目标被扣除为object类型,而sklearn无法与它们一起使用。 【参考方案1】:

Sklearn 无法识别 Boolean 类型的目标变量。将它们转换为数值进行训练:

y_train = y_train.astype('int')

如果您希望您的预测显示布尔值(而不是整数),您可以稍后将它们转换为 Boolean

y_pred = y_pred.astype('bool')

注意:如果您决定转换您的预测,请确保您预测的不是概率,而是类别(即输出是 01,而不是中间值的二维矩阵;如果您这样做了预测概率,首先将它们转换为类,然后进行布尔转换)。

【讨论】:

以上是关于我无法将逻辑回归拟合到模型中。如何解决这个问题?的主要内容,如果未能解决你的问题,请参考以下文章

6.逻辑回归

将逻辑回归模型拟合到 MNIST 数据需要很长时间

机器学习—逻辑回归LR

响应为比例时的逻辑回归(使用 JAGS)

拟合回归模型

ML——神经网络