sklearn:需要重塑数组但不知道在哪里

时间:2019-12-03 18:29:50

标签: python pandas numpy scikit-learn

我已经尝试了几乎所有内容,我知道我有某种方法或东西缺少,我对ML确实很陌生,但是我非常感谢任何帮助或解释。

df["Date"] and df["Open"] are arrays like: [1,2, ..., 10]

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

df = pd.read_csv('AAPL.csv')
clf = LinearRegression()

i = 0
for date in df["Date"]:
    s = date
    s = s.replace("-","")
    df["Date"][i] = s

    i += 1

clf.fit(df["Date"],df["Open"])
print("Prediction:", clf.predict(df["Date"][-1]))

这是Python抛出的错误:

ValueError: Expected 2D array, got 1D array instead:
array=[19801212. 19801215. 19801216. ... 20191127. 20191129. 20191202.].

Reshape your data either using array.reshape(-1, 1) if your data has a single
feature or array.reshape(1, -1) if it contains a single sample. line 16

经过一些尝试,错误和谷歌搜索,我弄清楚了如何通过执行以下操作来重塑df [“ Date]: clf.fit(np.array(df["Date"]).reshape(-1,1),df["Open"])

但是现在把这个扔给我: ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

要重塑:

clf.fit(df["Date"].values.reshape(-1,1),df["Open"].values.reshape(-1,1))

但是不确定datetime的{​​{1}}类型列,因为df["Date"]可以将其读取为字符串。您可以这样做:

pandas

用于类型转换(最后为整数)。最后,如果您有df["Date"] = pd.to_numeric(pd.to_datetime(df["Date"])) 行,则可以通过以下方式消除它们:

nan

希望这行得通。