scikit-learn估計器-KNN均值聚類

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格式,後面是像素和白邊的設置



附件列表

相關文章
相關標籤/搜索