简体   繁体   English

我陷入了SKlearn的属性错误

[英]I'm stuck on with an attribute error with SKlearn

I'm re-visiting a machine learning tutorial I did earlier in the year and as I've got a new laptop it seems to have thrown up some compatibility issues. 我正在重新访问我今年早些时候做的机器学习教程,并且由于我有新笔记本电脑,它似乎引发了一些兼容性问题。 I've looked at several other SO answers and solved it partly based on what seem to be new name requirements within the most recent version of SKlearn. 我查看了其他一些SO答案,并部分地根据最新版本的SKlearn中对新名称的要求对其进行了解决。 Here is the code, which ran fine when I did the tutorial 这是代码,当我完成本教程时可以正常运行

import quandl, math
import numpy as np
import pandas as pd
from sklearn import preprocessing, cross_validation, svm
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
from matplotlib import style
import datetime

style.use('ggplot')

df = quandl.get("WIKI/GOOGL")
df = df[['Adj. Open',  'Adj. High',  'Adj. Low',  'Adj. Close', 'Adj. 
Volume']]
df['HL_PCT'] = (df['Adj. High'] - df['Adj. Low']) / df['Adj. Close'] * 100.0
df['PCT_change'] = (df['Adj. Close'] - df['Adj. Open']) / df['Adj. Open'] * 
100.0

df = df[['Adj. Close', 'HL_PCT', 'PCT_change', 'Adj. Volume']]
forecast_col = 'Adj. Close'
df.fillna(value=-99999, inplace=True)
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'])

X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, 
test_size=0.2)
clf = LinearRegression(n_jobs=-1)
clf.fit(X_train, y_train)
confidence = clf.score(X_test, y_test)

forecast_set = clf.predict(X_lately)
df['Forecast'] = np.nan

last_date = df.iloc[-1].name
last_unix = last_date.timestamp()
one_day = 86400
next_unix = last_unix + one_day

for i in forecast_set:
    next_date = datetime.datetime.fromtimestamp(next_unix)
    next_unix += 86400
    df.loc[next_date] = [np.nan for _ in range(len(df.columns)-1)]+[i]

df['Adj. Close'].plot()
df['Forecast'].plot()
plt.legend(loc=4)
plt.xlabel('Date')
plt.ylabel('Price')
plt.show()

If you run this code as it is in 3.7 you'll get some errors related to SKlearn which I've been able to solve from advice on SO but once I deal with them i get the error as follows 如果您按3.7的方式运行此代码,则会得到一些与SKlearn相关的错误,我已经能够从SO的建议中解决这些错误,但是一旦我处理了这些错误,我将得到如下错误

H:\Documents\Python Scripts>py ML_tutorial_vid_5.1.py
Traceback (most recent call last):
  File "ML_tutorial_vid_5.1.py", line 34, in <module>
    X_train, X_test, y_train, y_test = cross_validate.train_test_split(X, y, 
test_size=0.2)
AttributeError: 'function' object has no attribute 'train_test_split'

All help appreciated. 所有帮助表示赞赏。

You are getting this error because train_test_split is now in model_selection module of sklearn . 因为您收到此错误train_test_split现在在model_selection的模块sklearn You can see the change log over here . 您可以在此处查看更改日志。

You can import it like this now. 您现在可以像这样导入它。

from sklearn.model_selection import train_test_split

and use it like this 像这样使用

X_train, X_test, y_train, y_test = train_test_split(X, y, 
test_size=0.2)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM