0

所以我试图获取有关股票的数据,收盘价格和移动平均线50,100,200。我得到了另一个数组,然后是买卖的标签。它与所有其他数组一起在一个数据框上得出结论。但问题是,当我尝试训练分类器,它给了我一个错误:Sklearn中的3d阵列错误

ValueError: Found array with dim 3. Estimator expected <= 2. 

When I concatenate the array, it gives me an error, ValueError: Unknown label type: array([[7.87401353,]])在它 更值这是我的代码:

from sklearn import tree 
import pandas as pd 
import pandas_datareader.data as web 
import numpy as np 

df = web.DataReader('goog', 'yahoo', start='2012-5-1', end='2016-5-20') 

close_price = df[['Close']] 

ma_50 = (pd.rolling_mean(close_price, window=50)) 
ma_100 = (pd.rolling_mean(close_price, window=100)) 
ma_200 = (pd.rolling_mean(close_price, window=200)) 

#adding buys and sell based on the values 
df['B/S']= (df['Close'].diff() < 0).astype(int) 
close_buy = df[['Close']+['B/S']] 
closing = df[['Close']].as_matrix() 
buy_sell = df[['B/S']] 


close_buy = pd.DataFrame.dropna(close_buy, 0, 'any') 
ma_50 = pd.DataFrame.dropna(ma_50, 0, 'any') 
ma_100 = pd.DataFrame.dropna(ma_100, 0, 'any') 
ma_200 = pd.DataFrame.dropna(ma_200, 0, 'any') 

close_buy = (df.loc['2013-02-15':'2016-05-21']).as_matrix() 
ma_50 = (df.loc['2013-02-15':'2016-05-21']).as_matrix() 
ma_100 = (df.loc['2013-02-15':'2016-05-21']).as_matrix() 
ma_200 = (df.loc['2013-02-15':'2016-05-21']).as_matrix() 
buy_sell = (df.loc['2013-02-15':'2016-05-21']).as_matrix() # Fixed 

list(close_buy) 

clf = tree.DecisionTreeClassifier() 
X = list([close_buy,ma_50,ma_100,ma_200]) 
y = [buy_sell] 
+0

可能重复的[Sklearn错误,数组与4昏暗。估计器<= 2](http://stackoverflow.com/questions/37361116/sklearn-error-array-with-4-dim-estimator-2) – piRSquared

回答

1

的问题是,你是创建一个变量X,它是一个二维数组列表。这自动意味着第三个维度。

# offending line 
X = list([close_buy,ma_50,ma_100,ma_200]) 

这需要连接以维持2个维度。

# corrected 
X = np.concatenate([close_buy,ma_50,ma_100,ma_200], axis=1) 

而且,我怀疑,一旦这个问题得到解决,你就会有另一种搭配:

y = [buy_sell] 

没有理由在[]到这个包起来。这会导致相同的三维问题。只是把这个:

y = buy_sell 
+0

我得到这个错误回溯(最近最后一次通话最后): 文件“ C:/Users/Samuel/PycharmProjects/untitled3/777.py“第41行 clf.fit(x,y) 文件”C:\ Users \ Samuel \ Anaconda3 \ lib \ site-packages \ sklearn \第174行,在fit中 check_classification_targets(y) check_classification_targets中的第173行文件“C:\ Users \ Samuel \ Anaconda3 \ lib \ site-packages \ sklearn \ utils \ multiclass.py” 提高ValueError(“未知标签类型:%r”%y) ValueError:未知标签类型:array([[7.87401353e + 02,7.93261381e + 02,7.87071324e + 02,] ) 1 – sam202252012

+0

使用0.17.1版本的scikit学习 – sam202252012

+0

事情出来了,显然我需要一个Regressor而不是一个分类器 – sam202252012