sklearn之Knn實戰乳腺癌資料案例

2021-10-02 17:01:13 字數 1710 閱讀 4651

from sklearn.datasets import load_breast_cancer

from sklearn.neighbors import kneighborsclassifier

from sklearn.model_selection import train_test_split

#對資料進行處理

data_breast=load_breast_cancer()

#提取資料的特徵

x=data_breast['data']

#提取資料的標籤

y=data_breast['target']

#劃分資料集和測試集

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)

#資料歸一化

from sklearn.preprocessing import minmaxscaler

mms=minmaxscaler()

mms.fit(x_train)

x_train=mms.transform(x_train)

x_test=mms.transform(x_test)

#資料交叉驗證

from sklearn.model_selection import cross_val_score as csv

from sklearn.neighbors import kneighborsclassifier

l=for i in range (1,21):

k=iknn=kneighborsclassifier(n_neighbors=k,weights='distance')

result=csv(knn,x_train,y_train,cv=5)

l# 畫圖觀察交叉驗證得到的k

a=pd.dataframe(l)

a.columns=['k','平均準確率','方差']

plt.figure(figsize=(8,6),dpi=100)

plt.plot(a.k,a.平均準確率)

plt.plot(a.k,a.平均準確率+2*a.方差,linestyle='--',color='r')

plt.plot(a.k,a.平均準確率-2*a.方差,linestyle='--',color='r')

plt.xticks(a.k)

plt.xlabel('k')

plt.ylabel('平均準確率')

plt.title('帶距離懲罰的5折交叉驗證學習曲線')

圖形顯示為:

得出結果:k=15時模型效果最為穩定

建立乙個k=15的knn模型

knn=kneighborsclassifier(n_neighbors=15,weights='distance')

knn.fit(x_train,y_train)

#測試k=15時資料的好壞

knn.score(x_test,y_test)

最終顯示結果為0.9649122807017544

得出結果:模型在測試集的正確率大約為96.5%。

建模完畢。

sklearn調包俠之KNN演算法

天下武功,唯快不破。今天就正式講解如何通過 sklearn小抄 武林秘籍,成為一代宗師調包俠。欲練此功,必先自宮 就算自宮,未必成功 若不自宮,也能成功。傳說江湖 機器學習領域 有兩大派別 一是學術派,該派資歷高,家境好,多為名門世家 學歷高,數學好 重基礎 數學推導和理論知識 一是實踐派,以找人切...

sklearn調包俠之KNN演算法

天下武功,唯快不破。今天就正式講解如何通過 sklearn小抄 武林秘籍,成為一代宗師調包俠。欲練此功,必先自宮 就算自宮,未必成功 若不自宮,也能成功。傳說江湖 機器學習領域 有兩大派別 一是學術派,該派資歷高,家境好,多為名門世家 學歷高,數學好 重基礎 數學推導和理論知識 一是實踐派,以找人切...

sklearn速度複習 knn

人工生點人工演算法 import matplotlib.pyplot as plt import numpy as np import operator x1 np.array 3,2,1 1類點x座標 y1 np.array 104,100,81 1類點y座標 x2 np.array 101,99...