机器学习: k-近邻(kNN)

1. k-nn描述:

给定一个训练数据集,对于新输入的实例,在训练集中找到与该实例最近的k个实例,统计这k个实例中多数的类别,就把该类别作为新输入实例的类别。

2. 参数:

  1. 距离度量:

    Lp距离(欧式距离、曼哈顿距离等)、皮尔逊距离、夹脚余弦距离。。。

    lp distance

  2. k的选择:

    如果k较小,相当于模型过于复杂,容易过拟合;

    k过大,相当于模型变得简单,容易欠拟合。

    在应用中,k值一般取一个比较小的数值。通常采用交叉验证法来选取最优的k值。

3. python代码:

  1. 我的实现:

    https://github.com/autoliuweijie/MachineLearning/tree/master/kNN

  2. sickit-learn:

    python:

        #Import Library
        from sklearn.neighbors import KNeighborsClassifier
        #Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset
        # Create KNeighbors classifier object model
        KNeighborsClassifier(n_neighbors=6) # default value for n_neighbors is 5
        # Train the model using the training sets and check score
        model.fit(X, y)
        #Predict Output
        predicted= model.predict(x_test)

4. 扩展:


稍加改变,例如对k个实例加权,可以用于回归。

参考:

[1]《统计学习方法》 李航 2012年3月第一版
[2]《机器学习实战》 Peter Harrington 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值