k近邻算法中,对数据进行与处理后对准确率的影响(2019/07/17的问题解答)

昨天对数据进行预处理后发现准确率和最佳k值都未发生变化,肯定是某个环节出了问题,于是对代码进行了修正。修正后的代码,数据在正则化,归一化,标准化后,准确率与最佳k值均发生了变化。bug修复成功。

#导入numpy,pandas,knn分类算法和训练集与测试集的切分工具
import numpy as np
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split

#读取数据,不要header(标头),用空格分割每种特征
data = pd.read_csv('./datingTestSet2.txt',header = None,sep ='\t')

#将data转为可用的array,原为dataframe
dataArray = np.array(data)

#分割特征与目标变量
X = dataArray[:,0:3]
y = dataArray[:,3]

#定义一个函数,在随机切分的同时选择不同的k值,以确定最佳k值。返回最佳k值与最佳k值下的准确率。
def begin(a,b):
    X_train,X_test,y_train,y_test = train_test_split(a,b)
    score = 0
    k = 0 
    for i in range(1,22):
        knn = KNeighborsClassifier(n_neighbors=i)
        knn.fit(X_train,y_train)
        ks = knn.score(X_test,y_test)
        if ks > score:
     
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值