【问题标题】:How to implement multiple regression?如何实现多元回归?
【发布时间】:2020-08-03 17:01:11
【问题描述】:

我正在练习简单的回归模型作为机器学习的介绍。我已经回顾了一些多元回归的样本模型,我相信这是线性回归的扩展,但具有超过 1 个特征。从我看到的示例中,线性回归和多元回归的语法是相同的。运行以下代码时出现此错误:

ValueError: x and y must be the same size.

为什么会出现此错误,我该如何解决?

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

df = pd.read_csv(r"C:\Users\****\Desktop\data.csv")

#x.shape =(20640, 2), y=(20640,)
X = df[['total_rooms', 'median_income']]
y = df['median_house_value']

X_test, y_test, X_train, y_train = train_test_split(X, y, test_size=.2, random_state=0)

reg = LinearRegression()
reg.fit(X_train, y_train)

我错过了一步吗?感谢您的宝贵时间。

【问题讨论】:

  • 那么,我应该猜你是托马斯品钦的粉丝吗? :)
  • 我是。希望尽快出最终小说。
  • 酷。答案是否解决了您的问题?
  • 我相信是这样,但我需要做一些数据清理,这可能是我最初的问题。谢谢。

标签: python scikit-learn linear-regression


【解决方案1】:

您的train_test_split 有误 - 结果的顺序很重要;正确的用法是:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.2, random_state=0)

检查documentation

【讨论】:

    【解决方案2】:

    您不必做任何您不想做的事情:-)。但一般来说,你会想以某种方式处理多重共线性之类的事情——但这并不一定意味着降维。

    您的数据是什么形状的?如果您有 20 个特征,但有 10k 个观察值,则应该不需要降维(至少在第一遍中不需要)。

    但是,如果您有 1k 个特征和 10k 个观察值,那么您将非常适合在学习器之前进行无监督的降维步骤。

    您可能想先尝试一些正则化(请参阅https://web.stanford.edu/~hastie/ElemStatLearn/ -- 您可以从那里免费下载这本书)。

    例如,尝试使用ElasticNet 类而不是LinearRegression 类。这几乎是一样的,但是对权重的 $L_1$ 和 $L_2$ 规范有一个惩罚。这往往有助于泛化。

    如果对您的特定问题没有更多了解,就很难说别的。

    【讨论】:

      猜你喜欢
      • 2018-05-01
      • 2019-12-23
      • 2019-05-09
      • 2016-10-22
      • 2013-06-22
      • 1970-01-01
      • 2018-03-26
      • 2020-03-16
      • 2020-05-09
      相关资源
      最近更新 更多