1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
ks=[]
acc_means=[]
precision_means=[]
recall_means=[]
f1_means=[]
for k in range(2,30):
ks.append(k)
knnModel=KNeighborsClassifier(n_neighbors=k)
acc_kcvs=cross_val_score(
knnModel,x,y,cv=10,scoring=make_scorer(accuracy_score)
)
acc_means.append(acc_kcvs.mean())
precision_kcvs=cross_val_score(
knnModel,x,y,cv=10,scoring=make_scorer(precision_score,pos_label="续约")
)
precision_means.append(precision_kcvs.mean())
recall_kcvs=cross_val_score(
knnModel,x,y,cv=10,scoring=make_scorer(recall_score,pos_label="续约")
)
recall_means.append(recall_kcvs.mean())
f1_kcvs=cross_val_score(
knnModel,x,y,cv=10,scoring=make_scorer(f1_score,pos_label="续约")
)
f1_means.append(f1_kcvs.mean())
score=pd.DataFrame({
"k":ks,
"precision":precision_means,
"acc":acc_means,
"recall":recall_means,
"f1":f1_means
})
score.plot(x="k",y=["precision",'acc',"recall","f1"],figsize=(10,5))
plt.xticks(range(2,30))
|