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...])造成了報錯。
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM