2016-09-06 71 views
1
import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib import style 
from sklearn.linear_model import LinearRegression 
from sklearn import preprocessing, cross_validation, svm 


df = pd.read_csv('table.csv') 
print (df.head()) 

df = df[['Price', 'Asset']] 
x = np.array(df.Price) 
y = np.array(df.Asset) 

x_train, x_test, y_train, y_test = cross_validation.train_test_split(
x, y, test_size=0.2) 


x_train = np.pad(x, [(0,0)], mode='constant') 
x_train.reshape((23,1)) 


y_train = np.pad(y, [(0,0)], mode ='constant') 
y_train.reshape((23,1)) 

np.reshape(-1, 1) 

错误:NumPy的重塑问题

runfile('C:/Users/HP/Documents/linear.py', wdir='C:/Users/HP/Documents') 
     Price  Asset 
0 87.585859 191 
1 87.839996 232 
2 87.309998 245 
3 88.629997 445 
4 88.379997 393 
C:\Users\HP\Anaconda3\lib\site-packages\sklearn\utils\validation.py:386: 

    DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample. 
    DeprecationWarning) 
Traceback (most recent call last): 

    File "<ipython-input-124-030ffa933525>", line 1, in <module> 
    runfile('C:/Users/HP/Documents/linear.py', wdir='C:/Users/HP/Documents') 

    File "C:\Users\HP\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 714, in runfile 
    execfile(filename, namespace) 

    File "C:\Users\HP\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 89, in execfile 
    exec(compile(f.read(), filename, 'exec'), namespace) 

    File "C:/Users/HP/Documents/linear.py", line 38, in <module> 
    clf.fit(x_train, y_train) 

    File "C:\Users\HP\Anaconda3\lib\site-packages\sklearn\linear_model\base.py", line 427, in fit 
    y_numeric=True, multi_output=True) 

    File "C:\Users\HP\Anaconda3\lib\site-packages\sklearn\utils\validation.py", line 520, in check_X_y 
    check_consistent_length(X, y) 

    File "C:\Users\HP\Anaconda3\lib\site-packages\sklearn\utils\validation.py", line 176, in check_consistent_length 
    "%s" % str(uniques)) 

ValueError: Found arrays with inconsistent numbers of samples: [ 1 23] 

我的数据框尺寸:23,2

我填补我x_train和y_train为[23.1]因为我得到这个初始误差ValueError异常:发现样本数不一致的阵列:[1 18]。 填充后我的错误消息:ValueError:发现样本数量不一致的数组:[1 23]。

然后我试图重塑它,仍然收到错误信息:ValueError:发现样本数不一致的阵列:[1 23]。

我该如何解决这个问题?

+0

你想重塑什么? 'np.reshape'不知道你想要重塑的东西。像'array.reshape((x,y))'一样使用它。 – Ian

+0

@mwormser说,你需要在数组对象上调用'reshape',比如'x_train'和'y_train'; 'x_train.reshape((23,1))' – Dartmouth

+0

尝试仍然收到错误消息:ValueError:找到的数组样本数不一致:[1 23] – Bolajio

回答

0

如果你只想重塑从大小(x, 1)数组(1, x)可以使用np.transposenumpy.ndarray.T功能:

x_train = x_train.T 
y_train = np.transpose(y_train) 

都达到同样的效果。

编辑:这只适用于一维数组。使用重塑更高维数组。

如果您不给我们提供完整的回溯,它显示错误发生在哪一行,我们不能帮助你更详细。

+1

转置和重塑** _不要做同样的事情!尝试'a = np.arange(6).reshape((2,3)); b = a.reshape((3,2)); c = a.T; np.all(b == c)'。请在发布之前将它的答案写出来! – Praveen

+0

@Praveen谢谢! – Bolajio

+0

@Praveen当然你是对的,我只想到一个维度是1的情况,我会编辑它。 – Ian