我正在练习简单的回归模型作为机器学习的介绍。我已经回顾了一些多元回归的样本模型,我相信这是线性回归的扩展,但具有超过 1 个特征。从我看到的示例中,线性回归和多元回归的语法是相同的。运行以下代码时出现此错误:ValueError: x and y must be the same size.为什么我会收到此错误,我该如何解决?import pandas as pdimport numpy as npfrom sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LinearRegressiondf = 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)我错过了一步吗?谢谢你的时间。
2 回答
慕的地6264312
TA贡献1817条经验 获得超6个赞
你有一个错误train_test_split
- 结果的顺序很重要;正确的用法是:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.2, random_state=0)
检查文档。
梦里花落0921
TA贡献1772条经验 获得超6个赞
你不必做任何你不想做的事情:-)。但一般来说,你会想以某种方式处理多重共线性之类的事情——但这并不一定意味着降维。
你的数据是什么形状的?如果您有 20 个特征,但有 10k 个观察值,则不需要降维(至少在第一遍中不需要)。
但是,如果您有 1k 个特征和 10k 个观察值,那么您将非常适合在学习者之前进行无监督的降维步骤。
您可能想先尝试一些正则化(请参阅https://web.stanford.edu/~hastie/ElemStatLearn/ - 您可以从那里免费下载这本书)。
因此,例如,尝试使用ElasticNet
类而不是LinearRegression
类。这几乎是一样的,但对权重的 $L_1$ 和 $L_2$ 规范会有所惩罚。这往往有助于泛化。
如果不了解您的特定问题的更多信息,就很难说其他任何事情。
添加回答
举报
0/150
提交
取消