sklearn之reshape(-1,1)

scikit-learn,又称sklearn,是一个开源的基于python语言的机器学习工具包。它通过NumPy, SciPy和Matplotlib等python数值计算的库实现高效的算法应用,并且涵盖了大多数主流机器学习算法。
 
sklearn官网链接讲解了所有算法的实现和简单应用:http://scikit-learn.org/stable/index.html 
 
在工程应用中,用python手写代码来从头实现一个算法的可能性非常低,这样不仅耗时耗力,还不一定能够写出构架清晰,稳定性强的模型。更多情况下,是分析采集到的数据,根据数据特征选择适合的算法,在工具包中调用算法,调整算法的参数,获取需要的信息,从而实现算法效率和效果之间的平衡。而sklearn,正是这样一个可以帮助我们高效实现算法应用的工具包。
 
 
在用sklearn进行模型预测时发现了几次同样的报错:
ValueError: Expected 2D array, got 1D array instead:
array=XXXXX
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
 
这是因为在新版sklearn中,所有数据都应该是二维矩阵,哪怕它只是单独一行或一列,需要使用.reshape(1,-1)进行转换,示例如下。
import sklearn.svm as svm
import numpy as np 
X = [[0, 0], [1, 1]] 
y = [0.5, 1.5] 
clf = svm.SVR() 
clf.fit(X, y) 
result = clf.predict(np.array([0.5, 0.5]).reshape(1, -1))
print result
 
其实还有更简洁的写法,多加一个[]即可:result = clf.predict([[0.5, 0.5]])
 
很多时候都是不经意间写成了.predict([X, Y...])造成了报错。
 
 
posted @ 2019-11-01 14:02  数之美  阅读(8737)  评论(0编辑  收藏  举报