我是学习机器学习的新手,所以请关注YouTube上的精彩教程。但是下面的代码给了我一个错误。我在这里阅读了类似的问题,但timetuple()
并未解决我的情况,也没有解决视频中的任何解决方案。
这是我的代码:
import pandas as pd
import quandl, math
from datetime import datetime, date, time, timedelta
import time
import numpy as np
from sklearn import preprocessing, cross_validation, svm
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt #plot stuff, how to plot in graph
from matplotlib import style #nice looking thing
style.use('ggplot') #which nice-looking-thing i wanna use
quandl.ApiConfig.api_key = '...' #erased my key for secrecy
df = quandl.get_table('WIKI/PRICES')
## ... ##other irrelevant code snippets
forecast_out = int(math.ceil(0.01*len(df)))
df['label'] = df[forecast_col].shift(-forecast_out)
X = np.array(df.drop(['label'],1))
X = preprocessing.scale(X)
X_lately = X[-forecast_out:]
X = X[:-forecast_out]
df.dropna(inplace=True)
y = np.array(df['label'])
y = np.array(df['label'])
# ... #other irrelevant code snippets
forecast_set = clf.predict(X_lately)
df['Forecast'] = np.nan
last_date = df.iloc[-1].name
last_unix = last_date.timestamp() ###MAIN attribute error found here
one_day = 86400
next_unix = last_unix + one_day
对于上面的代码,我得到以下错误:
AttributeError Traceback (most recent call last)
<ipython-input-8-4a1a193ea81d> in <module>()
1 last_date = df.iloc[-1].name
----> 2 last_unix = last_date.timestamp()
3 one_day = 86400
4 next_unix = last_unix + one_day
AttributeError: 'numpy.int64' object has no attribute 'timestamp'
虽然互联网上有很多解决方案,但我无法找到解决方案,但对我来说没有任何效果。我在anaconda中使用Python 3.5。 timetuple()
对我不起作用,并发生相同的属性错误。
答案 0 :(得分:0)
似乎它没有按日期索引行。因此,当您尝试获取last_date时,实际上它是获取int而不是date。
根据我的理解,您可以在阅读csv代码后使用以下行添加日期索引 - df.set_index('date',inplace = True)
答案 1 :(得分:0)
将last_date.timestamp()
替换为time.mktime(datetime.datetime.strptime(last_date,"%d%m%y").timetuple())
答案 2 :(得分:0)
嗨,有时候在做这样的操作时索引会改变。 Date
列不再是索引。
df=df.set_index('Date')
只需在创建dataframe
之后添加即可。
示例-
在此之后添加df = quandl.get_table('WIKI/PRICES')
或df=pd.read_csv("stock_data.csv")
。