【问题标题】:Python LinearRegression ValueError: Found input variables with inconsistent numbers of samples: [1, 3]Python LinearRegression ValueError:找到样本数量不一致的输入变量:[1, 3]
【发布时间】:2019-03-22 20:42:48
【问题描述】:

我用这段代码做LinearRegression

from sklearn.linear_model import LinearRegression
import pandas as pd

def calculate_Intercept_X_Variable():
    list_a=[['2018', '3', 'aa', 'aa', 93,1884.7746222667, 165.36153386251098], ['2018', '3', 'bb', 'bb', 62, 665.6392779848, 125.30386609565328], ['2018', '3', 'cc', 'cc', 89, 580.2259903521, 160.19280253775514]]
    df = pd.DataFrame(list_a)
    X = df.iloc[:, 5]
    y = df.iloc[:, 6]
    clf = LinearRegression()
    clf.fit(X, y)

calculate_Intercept_X_Variable()

但是报错信息是:

文件“E:\Anaconda3\lib\site-packages\sklearn\utils\validation.py”,第 181 行,在 check_consistent_length 中 " 样本: %r" % [int(l) for l in lengths]) ValueError:发现样本数量不一致的输入变量:[1, 3]

哪里错了?

如何修改我的代码?

【问题讨论】:

    标签: python scikit-learn linear-regression


    【解决方案1】:

    来自 scikit-learn 文档,它说:

    fit(X, y, sample_weight=None)

    X:类数组或稀疏矩阵,形状(n_samples,n_features) 训练数据

    y:array_like,形状(n_samples,n_targets) 目标值。如有必要,将转换为 X 的 dtype

    问题是现在 X 和 y 是一维数组。

    X.shape, y.shape
    # ((3,), (3,))
    

    你应该重塑你的 X 和 y:

    X = X.values.reshape(-1, 1)
    y = y.values.reshape(-1, 1)
    clf.fit(X,y)
    

    【讨论】:

    • X 和 y 必须是二维矩阵?
    • @J.Show fit 期望 X 和 y 的形状为 (n_samples, n_features),这意味着即使您使用 1 个字段,它的形状也应为 (3, 1),而不是 (3, )。我将进行一些编辑以进一步解释。
    • 只有X 需要是二维的。 y 在这里可以而且应该是一维的。
    猜你喜欢
    • 2021-02-17
    • 2020-11-03
    • 2022-01-16
    • 2021-07-29
    • 2020-11-15
    • 2021-10-09
    • 2020-07-05
    • 2017-06-30
    • 1970-01-01
    相关资源
    最近更新 更多