如何解决“ float()参数必须是字符串或数字,而不是'Timestamp'“错误?

时间:2019-08-10 09:08:42

标签: python scikit-learn

我正在编写一些代码来使用机器学习和深度学习技术来预测股市。但是,当我尝试使用线性回归时,出现了我似乎无法修复的错误。 我的数据是某家公司的股票。功能包括日期,未平仓,低价,最高价,收盘价,最后价,成交量和总交易量。

我已经在关于stackoverflow的问题上找到了类似的答案,但是他们使用的技术无法正常工作。

#setting index as date
df['Date'] = pd.to_datetime(df.Date,format='%Y-%m-%d')
df.index = df['Date']

#sorting
data = df.sort_index(ascending=True, axis=0)

#creating a separate dataset
new_data = pd.DataFrame(index=range(0,len(df)),columns=['Date', 
'Close'])

for i in range(0,len(data)):
    new_data['Date'][i] = data['Date'][i]
    new_data['Close'][i] = data['Close'][i]

#split into train and test data
train = df[:130]
test = df[130:]

x_train = train.drop('Close', axis=1)
y_train = train['Close']
x_test = test.drop('Close', axis=1)
y_test = test['Close']

#implement linear regression
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(x_train,y_train)

最后一行抛出此错误:

  

TypeError:float()参数必须是字符串或数字,而不是   “时间戳记”

1 个答案:

答案 0 :(得分:0)

数据帧df的索引设置为等于Date。完成sort_index()步骤后,请尝试将其删除。

在sort_index步骤之后,执行以下操作:

df = df.reset_index(drop=True)

然后将df分成训练测试,然后进行回归步骤。 也许这会有所帮助。