【问题标题】:Suprisingly big array for Test/Training Set测试/训练集惊人的大数组
【发布时间】: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


【解决方案1】:

我认为你的数据的维度必须是 (157673, 5) 而不是 (5, 157673)。因此,协方差矩阵将是一个 5x5 矩阵。

通常,在机器学习中,观察是按行排列的。

【讨论】:

    猜你喜欢
    • 2013-06-18
    • 2020-01-21
    • 1970-01-01
    • 2019-06-16
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 2012-07-06
    相关资源
    最近更新 更多