1. 程式人生 > >資料探勘-K-近鄰分類器-Iris資料集分析-使用K-近鄰分類器進行分類預測(四)

資料探勘-K-近鄰分類器-Iris資料集分析-使用K-近鄰分類器進行分類預測(四)

# coding: utf-8
#使用 scikit-learn庫的K-近鄰分類器完成分類
#1. 首先將資料集中的資料進行打亂
#2. 將資料分為訓練集和測試集兩部分
#3. 使用 k-means分類器進行分類訓練,得到預測模型
#4. 使用模型對測試集進行測試,並與真實結果進行比較,計算錯誤率
import numpy as np
from sklearn import datasets
np.random.seed(0)
iris=datasets.load_iris()
x=iris.data
y=iris.target
#打亂資料集中的所有資料
# permutation函式: 隨機排列   https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.permutation.html
i=np.random.permutation(len(iris.data))
#訓練集: 取出打亂後的前140條資料
x_train=x[i[:-40]]   #前110條資料
y_train=y[i[:-40]]   #前110條資料對應的花的型別

#輸出x_train, y_train
#x_train
#y_train

#測試集
x_test=x[i[-40:]]   #最後40條資料
y_test=y[i[-40:]]   #最後40條資料對應的花的型別

#使用k-近鄰演算法   引入kneighborsClassifier分類器,再使用fit()來訓練
from sklearn.neighbors import KNeighborsClassifier
# KneighborsClassifier引數詳解: http://blog.csdn.net/helloworld6746/article/details/50817427
# http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html
knn=KNeighborsClassifier()   #使用建構函式建立分類器
knn.fit(x_train,y_train)     #呼叫fit方法訓練分類器,得到預測模型

#下面使用這個模型進行預測
y_predicted=knn.predict( x_test )
#對比標準結果
y_test  

#計算正確率
accuracy=np.mean( y_predicted==y_test)*100
print(u"模型正確率為:{:.1f}%".format( accuracy))    # 95%