我已经尝试了几乎所有内容,我知道我有某种方法或东西缺少,我对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').
非常感谢您的帮助。
答案 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
希望这行得通。