開源機器學習工具scikit-learn入門

jopen 11年前發布 | 49K 次閱讀 機器學習 scikit-learn

Scikit-Learn是基于python的機器學習模塊,基于BSD開源許可證。這個項目最早由DavidCournapeau 在2007 年發起的,目前也是由社區自愿者進行維護。

Scikit-Learn的官方網站是http://scikit-learn.org/stable/,在上面可以找到相關的Scikit-Learn的資源,模塊下載,文檔,例程等等。

Scikit-Learn的安裝需要numpy,scipy,matplotlib等模塊,windows用戶可以到

http://www.lfd.uci.edu/~gohlke/pythonlibs直接下載編譯好的安裝包以及依賴,也可以到這個網站下載http://sourceforge.jp/projects/sfnet_scikit-learn/

 

scikit-learn的基本功能主要被分為六個部分,分類,回歸,聚類,數據降維,模型選擇,數據預處理,具體可以參考官方網站上的文檔。

對于具體的機器學習問題,通常可以分為三個步驟,數據準備與預處理,模型選擇與訓練,模型驗證與參數調優,這里以邏輯回歸模型為例說明。

scikit-learn支持多種格式的數據,包括經典的iris數據,LibSVM格式數據等等。為了方便起見,推薦使用LibSVM格式的數據,詳細見LibSVM的官網。

from sklearn.datasets importload_svmlight_file,導入這個模塊就可以加載LibSVM模塊的數據,

t_X,t_y=load_svmlight_file("filename")

機器學習模型也要導入相應的模塊,邏輯回歸模型在下面的模塊中。

from sklearn.linear_modelimport LogisticRegression

regressionFunc =LogisticRegression(C=10, penalty='l2', tol=0.0001)

train_sco=regressionFunc.fit(train_X,train_y).score(train_X,train_y)

test_sco=regressionFunc.score(test_X,test_y)

就可以完成模型的訓練和測試了。

為了選擇更好地模型可以進行交叉實驗,或者使用貪心算法進行參數調優。

導入如下模塊就可以,

CV:

from sklearn importcross_validation

X_train_m, X_test_m,y_train_m, y_test_m = cross_validation.train_test_split(t_X,t_y, test_size=0.5,random_state=seed_i)

regressionFunc_2.fit(X_train_m,y_train_m)

sco=regressionFunc_2.score(X_test_m,y_test_m, sample_weight=None)

 

GridSearch:

from sklearn.grid_searchimport GridSearchCV

tuned_parameters =[{'penalty': ['l1'], 'tol': [1e-3, 1e-4],

                     'C': [1, 10, 100, 1000]},

                    {'penalty': ['l2'], 'tol':[1e-3, 1e-4],

                     'C': [1, 10, 100, 1000]}]

clf =GridSearchCV(LogisticRegression(), tuned_parameters, cv=5, scoring=['precision','recall'])

print(clf.best_estimator_)

 

當然可以利用matplotlib繪制學習曲線,需要導入相應模塊如下:

from sklearn.learning_curveimport learning_curve,validation_curve

核心代碼如下,具體參見Scikit-Learn的官方文檔:

rain_sizes, train_scores,test_scores = learning_curve(

        estimator, X, y, cv=cv, n_jobs=n_jobs,train_sizes=train_sizes)

train_scores, test_scores =validation_curve(

        estimator, X, y, param_name,param_range,

        cv, scoring, n_jobs)

 

當然,Scikit-Learn中的機器學習模型非常豐富,包括SVM,決策樹,GBDT,KNN等等,可以根據問題的類型選擇合適的模型,更多內容請參閱官方文檔。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!