【发布时间】:2021-08-06 21:49:00
【问题描述】:
我正在尝试使用具有 157673 个条目的数据集使用线性回归创建预测模型。
数据(在 csv 文件中)的格式如下:
Timestamp,Signal_1,Signal_2,Signal_3,Signal_4,Signal_5
2021-04-13 11:03:13+02:00,3,3,3,12,12
我当前的代码:
filename = 'test.csv'
df = pd.read_csv(filename , parse_dates=['Timestamp'], header=0)
df['Timestamp'] = pd.to_numeric(pd.to_datetime(df['Timestamp']))
u, v, w, x, y, z = df.values.T
X = np.asarray([v, w, x, y, z])
Y = np.asarray([u, u, u, u, u])
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, shuffle= True)
lineReg = LinearRegression()
lineReg.fit(X_train, y_train)
print('Score: ', lineReg.score(X_test, y_test))
print('Weights: ', lineReg.coef_)
当打印出 X 和 Y 的形状时,它是(5, 157673)
但是现在我遇到了错误MemoryError: Unable to allocate 185. GiB for an array with shape (157673, 157673) and data type float64。
这是为什么呢?一定是哪里出了问题,如果不是,为什么突然变成(157673, 157673)而不是(6, 157673)?
【问题讨论】:
-
数据应该有
(157673, 5)的形状;观察成行。当LinearRegression尝试计算协方差矩阵时,它会尝试生成 157673x157673 矩阵而不是 5x5 矩阵,这会让你记忆犹新……
标签: python pandas numpy machine-learning scikit-learn