python机器学习应用mooc_(1)KNN

KNN

  • 定义
    通过计算待分类数据点,与已有数据集中的所有数据点的距离。取距离最小的前k个点,根据“少数服从多数”的原则,将这个数据点划分为出现次数最多的那个类别。

  • sklearn参数说明

    使用方式:sklearn.neighbors.KNeighborsClassifier
    主要参数:

    • n_neighbors: 用于指定分类器中K的大小(默认为5)
    • weights:设置选中的K个点对分类器结果影响的权重(默认值为uniform ,也可以传入自己编写的权值计算函数)
    • algorithm:设置用于计算临近点的方法。由于当数据量很大的情况下计算当前点和所有点的距离,再选出最近的k个点,这个过程的计算量非常耗时,所以algorithm选项中提供了==ball_tree==、==kd_tree==、 ==brute== 算法,它们代表不同的寻找邻居的优化算法,默认值为auto(会根据训练数据自动选择)
  • KNN实例使用

from sklearn.neighbors import KNeighborsClassifier

#step1:创建数据
x=[[0],[1],[2],[3]]  #创建数据
y=[0,0,1,1]          #创建数据对应标签

#step2:设置参数并训练分类器
neigh=KNeighborsClassifier(n_neigbors=3) #设置邻居数为3
neigh.fit(x,y) #调用fit()进行训练

#step3:测试训练好的knn分类器效果
#输入未知样本[1.2],利用KNN进行分类
print(neigh.predict([[1.1]])) #调用predict函数进行预测,输入为数组格式


  • 关于K的取值

  • K如果较大,可以减少估计误差,但是距离较远的样本也会对预测起作用,导致预测错误
  • K如果较小,相当于使用较小的领域进行预测,如果邻居恰好是噪声点会导致过拟合
  • 所以,K会倾向于选择较小的值,并使用交叉验证法选取最优K值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值