1. 程式人生 > >機器學習與計算機視覺(sklearn快速上手)

機器學習與計算機視覺(sklearn快速上手)

【 宣告:版權所有,歡迎轉載,請勿用於商業用途。 聯絡信箱: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掉對應的程式碼即可。在使用演算法的時候,我們沒有修改引數,如果對某些演算法特別熟悉,大家可以設定不同的模型引數依次進行分析和練習。程式碼雖然不復雜,但是對自己快速入門還是大有裨益的。