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