03_k近邻算法

KNN简单介绍

  • KNN是分类算法,用于解决分类问题

  • KNN算法怎么找到邻居的呢?

    • 对电脑而言,我们给给了一堆数据,它会去计算所有点的距离并然后排序!选择距离比较小的k个点!
  • KNN算法,比较耗费时间,要求数据量不能太大,时间复杂度空间复杂度,比较大。

KNN怎么优化

修改超参数

  • knn = KNeighborsClassifier(n_neighbors=5, weights='distance', p=2)
    • n_neighbors:邻居数量,默认是5个

      • 邻居数量给的时候要小于样本数量的开平方: 总 样 本 数 量 \sqrt{总样本数量}
    • weights:权重

      • uniform:每个样本的权重都一样(默认参数)
      • distance:根据距离的远近来判定获得的权重
    • p=2

数据预处理提高准确率

  • 由于特征本身表达方式(度量衡)的原因而导致在绝对数值上的小数据被大数据“吃掉”的情况。影响。
  • 这个时候我们需要做的就是对抽取出来的数据(features vector)进行归一化处理,以保证每个特征被分类器平等对待
  • max-min归一化:将数值变成0~1之间
    • x n o r m a l i z a t i o n = x − x . m i n ( ) x . m a x ( ) − x . m i n ( ) x_{normalization}=\frac{x-x.min()}{x.max()-x.min()} xnormalization=x.max()x.min()xx.min()
      • x n o r m a l i z a t i o n = x − x . m i n ( a x i s = 0 ) x . m a x ( a x i s = 0 ) − x . m i n ( a x i s = 0 ) x_{normalization}=\frac{x-x.min(axis=0)}{x.max(axis=0)-x.min(axis=0)} xnormalization=x.max(axis=0)x.min(axis=0)xx.min(axis=0)
  • z-score归一化
    • x n o r m a l i z a t i o n = x − μ σ x_{normalization}=\frac{x-\mu}{\sigma} xnormalization=σxμ μ \mu μ是平均值, σ \sigma σ 是标准差
      • x n o r m a l i z a t i o n = x − x . m e a n ( a x i s = 0 ) x . s t d ( a x i s = 0 ) x_{normalization}=\frac{x-x.mean(axis=0)}{x.std(axis=0)} xnormalization=x.std(axis=0)xx.mean(axis=0)
  • sigmiod归一化
    • x n o r m a l i z a t i o n = 1 1 + e − x x_{normalization} = \frac{1}{1 + e^{-x}} xnormalization=1+ex1
      • 当我们的数据特别大的时候就会趋近于1,特别小的时候他就会趋近于0
      • 所以,当有特别大或者特别小的数字的时候不适用sigmoid归一化

3 σ \sigma σ准则

  • ∣ ∣ X − μ ∣ ∣ > 3 σ ||X-\mu|| > 3\sigma Xμ>3σ μ \mu μ是平均值, σ \sigma σ 是标准差
    • n p . a b s ( X − X . m e a n ( a x i s = 0 ) ) > 3 ∗ X . s t d ( a x i s = 0 ) np.abs(X-X.mean(axis=0)) > 3*X.std(axis=0) np.abs(XX.mean(axis=0))>3X.std(axis=0)
    cond = np.abs(X-X.mean(axis=0)) < 3*X.std(axis=0)
    # 一行中全部都是正常值才是正常值
    cond.all(axis=1)
    # 获取正常值
    X[cond2]
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值