机器学习之K-最邻近算法(3)

📅 2026/7/25 2:07:19
机器学习之K-最邻近算法(3)
本文使用knn算法及其变种对kaggle大赛中的糖尿病进行预测。废话省略直接代码 kaggle大赛中的糖尿病预测。 import pandas as pd; import numpy as np; from sklearn.neighbors import KNeighborsClassifier; import matplotlib.pyplot as plt; from sklearn.model_selection import train_test_split; def PandasReadData(filepath): datapd.read_csv(filepath) print(data.shape)#(768, 9) print(data.head()) #观察标签的统计数据 print(data.groupby(Outcome).size()) 统计分析总共有768个样本8个特征1个标签。分两类0和1. return data; pass; def splitdata(data): xdata.iloc[:,1:8]; ydata.iloc[:,8]; x_train,x_test,y_train,y_testtrain_test_split(x,y,test_size0.3); return x_train,x_test,y_train,y_test; def KNN(x_train,x_test,y_train,y_test): #普通knn knn1KNeighborsClassifier(3); knn1.fit(x_train,y_train); print(knn1:{}.format(knn1.score(x_test,y_test))) #权值knn knn2KNeighborsClassifier(n_neighbors5,weightsdistance); knn2.fit(x_train,y_train); print(knn2:{}.format(knn2.score(x_test,y_test))) #半径knn knn3KNeighborsClassifier(n_neighbors5,radius50.0); knn3.fit(x_train,y_train); print(knn3:{}.format(knn3.score(x_test,y_test))) pass; if __name__ __main__: dataPandasReadData(diabetes.csv); x_train,x_test,y_train,y_testsplitdata(data) KNN(x_train,x_test,y_train,y_test)运行结果(768, 9) Pregnancies Glucose ... Age Outcome 0 6 148 ... 50 1 1 1 85 ... 31 0 2 8 183 ... 32 1 3 1 89 ... 21 0 4 0 137 ... 33 1 [5 rows x 9 columns] Outcome 0 500 1 268 dtype: int64 knn1:0.7705627705627706 knn2:0.7489177489177489 knn3:0.7619047619047619从结果可以看出好像改进后的算法还没有普通的knn算法好呢。