杭州治疗白癜风效果最好的医院 https://m-mip.39.net/baidianfeng/mipso_4769940.html
knn算法,也叫k-最临近算法。全称K-NearestNeighbor。所谓K最近邻,就是K个最近的邻居的意思,说的是每个样本都可以用它最接近的K个临近值来代表。换言之,近朱者赤近墨者黑。近邻算法就是将数据集合中每一个记录进行分类的方法。此处的K是指,在预测点周围的K个样本点的分类信息。
手动实现算法
导入所使用的库,数据集使用自带数据集。
importnumpyasnpfromsklearnimportdatasetsfromsklearn.model_selectionimporttrain_test_splitfromcollectionsimportCounter
导入数据,接收与分割数据
iris=datasets.load_iris()X=iris.datay=iris.targetX_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2)
定义距离函数
defeuc_dis(instance1,instance2):dist=np.sqrt(sum((instance1-instance2)**2))returndist
模型函数
#此处的k为所预测的点的周围的样本取值defknn_classify(X,y,testInstance,k=5):distances=[euc_dis(x,testInstance)forxinX]#kneighors返回的是distances列表中d阿索引#但由于distances列表所引述徐与上方的训练数据索引相同,所以kneighors也是上方训练数据的索引kneighors=np.argsort(distances)[:k]count=Counter(y[kneighors])returncount.most_