機器學習 KNN算法實現 (鳶尾花)


 

 

 

 

frame 是Pandas的dataframe對象

alpha 圖像透明度

figsize 英寸為單位的圖像大小

diagonal 只能在{‘hist','kde'}中選一個 hist表示直方圖 kde表示核密度估計

     這個參數是scatter_matrix的關鍵參數

marker 是標記類型,如圈,點,三角號

代碼

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
iris_dataset=load_iris()
X_train,X_test,y_train,y_test=train_test_split(iris_dataset['data'],iris_dataset['target'],random_state=2)
#print("X_train",X_train)
#print("y_train",y_train)
#print("X_test",X_test)
#print("y_test",y_test)
#print("X_train shape: {}".format(X_train.shape))
#print("X_test shape: {}".format(X_test.shape))
import pandas as  pd
import matplotlib.pyplot as plt
iris_dataframe=pd.DataFrame(X_train,columns=iris_dataset.feature_names)
pd.plotting.scatter_matrix(iris_dataframe,c=y_train,figsize=(15,15),marker='o',hist_kwds={'bins':20},s=60,alpha=.8)
plt.show()

其中在 jupyter notebook里是不需要import matplotlib.pyplot 就可以顯示圖像

但是在VScode里必須 加這句

 

從中可以看出 比如 special width 和 special length 之間的關系比較雜亂

我們在訓練模型時要優先選擇關系明顯的特征對進行學習

 

 

 

 

 

n_neighbors 表示近鄰數量

weights 計算距離時的權重   缺省值是uniform 表示平均權重

             distance表示距離遠近設置不同的權重

metric 是距離的計算 缺省值是 minkowski  閔氏距離 

           顯然當P=2即為歐氏距離

                      P=1即為曼哈頓距離

 

from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
iris=datasets.load_iris()
print("數據集結構:",iris.data.shape)
#獲取屬性
iris_X=iris.data
#獲取類別
iris_y=iris.target
#划分數據集和訓練集
iris_train_X,iris_test_X,iris_train_y,iris_test_y=train_test_split(iris_X,iris_y,test_size=0.2,random_state=0)
#分類器初始化,參數默認
knn=KNeighborsClassifier()
#對訓練集進行訓練
knn.fit(iris_train_X,iris_train_y)
#對測試集數據的鳶尾花類型進行預測
predict_result=knn.predict(iris_test_X)
print("測試集大小:",iris_test_X.shape)
print("真實結果:",iris_test_y)
print("預測結果:",predict_result)
#顯示預測結果准確率
print("預測准確率",knn.score(iris_test_X,iris_test_y))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM