機器學習與計算機視覺(sklearn快速上手)
阿新 • • 發佈:2019-01-23
【 宣告:版權所有,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】
很多熟悉機器學習的同學,都知道python下面有一個sklearn的庫。這個庫使用起來很簡單,不但功能多演算法全,而且很多引數都是預設的,使用的時候直接呼叫就可以了。我建議大家,如果是生產使用就直接使用sklearn演算法庫好了,如果是自己練習的話,還是一步一步去練習和分析具體的演算法內容。
sklearn到底有多方便,下面,我們就以一段程式碼加以說明。
#!/usr/bin/python import os import sys import re from sklearn import datasets from sklearn.linear_model import LogisticRegression from sklearn.naive_bayes import GaussianNB from sklearn import svm from sklearn.ensemble import GradientBoostingClassifier from sklearn import tree from sklearn.neighbors import KNeighborsClassifier from sklearn.ensemble import RandomForestClassifier ''' get data here ''' def get_datasets(): iris = datasets.load_iris() x = iris.data y = iris.target return x, y ''' logistic regression classifer ''' def get_logistic_classifier(attr, label): lr = LogisticRegression() lr.fit(attr, label) return lr ''' bayes classifier ''' def get_gaussian_classifier(attr, label): gnb = GaussianNB() gnb.fit(attr, label) return gnb ''' svm classifier ''' def get_svm_classifier(attr, label): s = svm.SVC() s.fit(attr, label) return s ''' gradient boosting decision tree classifier ''' def get_gbdt_classifier(attr, label): gbdt = GradientBoostingClassifier() gbdt.fit(attr, label) return gbdt ''' decision tree classifier ''' def get_tree_classifier(attr, label): dt = tree.DecisionTreeClassifier() dt.fit(attr, label) return dt ''' knn classifier ''' def get_knn_classifier(attr, label): knn = KNeighborsClassifier() knn.fit(attr, label) return knn ''' random forest classifier ''' def get_rf_classifier(attr, label): rf = RandomForestClassifier() rf.fit(attr, label) return rf ''' check data accuracy by classifier ''' def check_data(cf, attr, label): num = len(attr) if 0 == num: print 'no data found' return count = 0 for i in range(num): if cf.predict(attr[i]) == label[i]: count += 1 print 'accuracy is ' + str(count * 100.0 / num) + '%\n' ''' file start function ''' def main(): x, y = get_datasets() #cf = get_logistic_classifier(x[0:120], y[0:120]) #cf = get_gaussian_classifier(x[0:120], y[0:120]) #cf = get_svm_classifier(x[0:120], y[0:120]) #cf = get_gbdt_classifier(x[0:120], y[0:120]) #cf = get_tree_classifier(x[0:120], y[0:120]) #cf = get_knn_classifier(x[0:120], y[0:120]) cf = get_rf_classifier(x[0:120], y[0:120]) check_data(cf, x[120:150], y[120:150]) if __name__ == '__main__': main()
上面這段程式碼不是很長,但是包含的內容還是很多的。首先,我們從iris那裡獲取資料,接著利用iris資料進行演算法建模,最後對iris部分資料進行分類判斷。在演算法建模的時候,我們使用了logistic迴歸、bayes、svm、gbdt、決策樹、knn、隨即森林等多種學習方法,大家可以根據自己的需要comment和uncommet掉對應的程式碼即可。在使用演算法的時候,我們沒有修改引數,如果對某些演算法特別熟悉,大家可以設定不同的模型引數依次進行分析和練習。程式碼雖然不復雜,但是對自己快速入門還是大有裨益的。