scikit-learn庫實現了一系列的數據挖掘,提供通用的編程接口、標準化的測試和調參工具
python
主要包含:算法
估計器:用於聚類、迴歸、分類分析編程
轉化器:用於數據的預處理和數據抓換數組
流水線:組合數據挖掘的流程,便於再次使用網絡
估計器:爲了實現大量的分類算法,該庫把相關功能封裝成所謂的估計器,主要包括兩個函數:app
fit():訓練算法,設置內部參數。接受訓練集和類別這兩個參數
dom
predict():參數爲測試集,預測測試機的類別,而且返回一個測試集識別後級別的數組函數
大多scikit-learn庫接受和輸出的數據格式都爲numpy 的數組格式工具
scikit-learn庫提供了不少估計器,例如隨機森林,svm,神經網絡測試
近鄰算法:
距離測度方法:
歐式距離:兩個特徵響亮的長度平方和的平方根
曼哈頓距離
餘弦距離
# -*- coding: utf-8 -*-"""Created on Thu Mar 2 21:43:06 2017@author: zzpp220"""from pandas import DataFrame,Seriesimport pandas as pdimport numpy as npimport os,csvfrom sklearn.cross_validation import train_test_splitfrom sklearn.cross_validation import cross_val_score#交叉驗證from matplotlib import pyplot as pltdata_folder='/media/zzpp220/Data/Linux_Documents/DOWNLOAD/python-DataAnalysis/xianku_book'data=os.path.join(data_folder,'ionosphere.data')#csv --comma-seperated-valuesX=np.zeros((351,34),dtype='float')y=np.zeros((351,),dtype='bool')with open(data,'r') as input: reader=csv.reader(input)# X=np.array([]) for i ,row in enumerate(reader): data=[float(datum) for datum in row[:-1]] X[i]=data#讀數據至數組X y[i]=row[-1]=='g'#讀類別值數組y ## set train_set and test_set X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=14) ##導入k近鄰分類器,併爲其初始化一個實例,參數用默認的,之後再講調參,該算法默認選擇5個近鄰做爲分類一句 from sklearn.neighbors import KNeighborsClassifier estimator=KNeighborsClassifier()# 創建實例 #估計器建立號以後,就要用進行數據訓練, #k近鄰估計器分析訓練集中 的數據,比較待分類的新數據點和訓練集中的數據,找到新數據點的 近鄰 estimator.fit(X_train,y_train) #用測試集測試孫發,【評估在測試集上的表現 y_predicted=estimator.predict(X_test) accuracy=np.mean(y_test==y_predicted)*100 print 'the accuracy is {0:.1f}%'.format(accuracy) scores=cross_val_score(estimator,X,y,scoring='accuracy') average_accuracy=np.mean(scores)*100 print 'the accuracy is {0:.1f}%'.format(average_accuracy) ##調參優化結果 #k近鄰算法有多個參數,最終藥店 是初始緊鄰點的選擇,想測試一系列的緊鄰點的值,能夠進行屢次實驗 avg_Scores,all_score=[],[] parameter_values=range(1,21) for num_neighbor in parameter_values: multi_test_estimator=KNeighborsClassifier(n_neighbors=num_neighbor) multi_testscore=cross_val_score(multi_test_estimator,X,y,scoring='accuracy') all_score.append(multi_testscore) avg_Scores.append(np.mean(multi_testscore)) plt.plot(parameter_values,avg_Scores,'-o')#畫圖,橫座標,縱座標,點的標誌 plt.savefig('knn-multi-neighbor-test.pdf',dpi=400,bbox_inchs='tight')#保存成pdf格式,後面是像素和白邊的設置