Python sklearn:需要重塑阵列,但不要';我不知道在哪里

Python sklearn:需要重塑阵列,但不要';我不知道在哪里,python,pandas,numpy,scikit-learn,Python,Pandas,Numpy,Scikit Learn,我已经尝试了几乎所有的方法,我知道有一种方法或一些东西我错过了,我真的是在ML的noob,但我真的非常感谢任何帮助或解释 df[“Date”]和df[“Open”]是类似于[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 =

我已经尝试了几乎所有的方法,我知道有一种方法或一些东西我错过了,我真的是在ML的noob,但我真的非常感谢任何帮助或解释

df[“Date”]和df[“Open”]是类似于[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[“日期”:
clf.fit(np.array(df[“Date”])。重塑(-1,1),df[“Open”])

但现在我要说的是:
ValueError:输入包含NaN、无穷大或对数据类型('float64')太大的值。

非常感谢您的帮助,提前谢谢。

关于整形:

clf.fit(df["Date"].values.reshape(-1,1),df["Open"].values.reshape(-1,1))
但不确定您是否有正确的
datetime
类型列,因为
df[“Date”]
可以将其作为字符串读取。您可以执行以下操作:

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

df = df.dropna(how='any',axis=0, subset=['Date','Open'])

希望这能起作用。

df['Date']
看起来像字符串值。我认为这不适合线性回归。双方括号不是单clf.fit(df[[“Date”]],df[“Open”]])双平方:ValueError:Input包含NaN、无穷大或对dtype太大的值('float64')。我认为scikitlearn允许数据帧如此clf.fit(df)[['date']],df['Open']])也应work@Ryan在
x
上只有两个括号:
clf.fit(df['date']],df['Open'])