【问题标题】:Logistic regression in python - beginner - reshaping datasetpython中的逻辑回归-初学者-重塑数据集
【发布时间】:2021-02-03 22:40:23
【问题描述】:

您好:我正在尝试在 python 中测试逻辑回归模型。我有一个特征以及数据集中的因变量。当我运行分类器时,我收到以下消息:

ValueError: Expected 2D array, got 1D array instead:
array=[8. 4. 6. ... 5. 7. 3.].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

我该如何纠正这个问题?

另外 - 这是一个不平衡的数据集。结果仅出现在数据集中大约 1% 的记录中。我欢迎您提出任何解决此问题的建议,无论是过采样、欠采样等。

谢谢!

【问题讨论】:

  • 好吧,从您提供的英特尔中,我猜您的输入数组包含偶数索引处的 X 值和奇数索引处的 Y 值。如果是这种情况,您可以使用data = np.stack([V[::2], V[1::2]]) 生成适当形状的数据集。如果不是这种情况,您需要与我们分享更多信息:)

标签: python reshape logistic-regression


【解决方案1】:

只需传递X.reshape(-1, 1) 而不是X

【讨论】:

  • 谢谢大家。感谢您的意见。如果我仍然卡住,我会尝试这些并跟进。
【解决方案2】:

您有一个 X 和一个 Y 值。由于通常有许多 X 变量来预测一个 Y 变量,逻辑回归模型需要这样的输入:

[[1],[2],[3]]

这与过采样或欠采样无关,您的输入数据格式不正确。

您可以像这样将 1d 转换为 2d 列表:

X = [1,2,3,4]
X = [[item] for item in X]

或者使用 numpy 数组:

X = X.reshape(-1,1)

【讨论】:

  • 我终于回到了这个分析,但我仍然遇到重塑代码的问题。这是我用来导入数据的代码: data = pd.read_csv(r'T:\dataset.csv') X = data['LACE_SCORE'] y = data['READMIT'] res = sm.Logit( y, X).fit() lr = LogisticRegression().fit(X.values.reshape(-1,1), y) 然后,我尝试运行此代码: model = LogisticRegression(solver = 'liblinear', random_state=0).fit(x,y) 你能澄清一下我的代码中我应该在哪里包含 reshape 语句吗?谢谢。
【解决方案3】:

作为其他解决方案的替代方案,numpy 具有 np.atleast_2d 用于从 1D 提升到 2D 的功能:

import numpy as np
X2D = np.atleast_2d(X)

之后您可能需要进行转置 (.T)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 2016-09-13
    • 2018-08-17
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多