美文网首页
【挖掘模型】:Python-KNN算法

【挖掘模型】:Python-KNN算法

作者: dataheart | 来源:发表于2017-05-21 12:05 被阅读123次

KNN-K近邻 分类算法原理

        # 从训练集中找到和新数据最接近的K条记录,然后根据他们的主要分类来决定新的数据的类别
        # 图中的数据集是良好的数据,即都打好了label,一类是蓝色的正方形,一类是红色的三角形,那个绿色的圆形是我们待分类的数据。
            # 具体是每次来一个未知的样本点,就在附近找K个最近的点进行投票
            # 如果K=3,那么离绿色点最近的有2个红色三角形和1个蓝色的正方形,这3个点投票,于是绿色的这个待分类点属于红色的三角形。
            # 如果K=5,那么离绿色点最近的有2个红色三角形和3个蓝色的正方形,这5个点投票,于是绿色的这个待分类点属于蓝色的正方形。
        # KNN本质是基于一种数据统计的方法!其实很多机器学习算法也是基于数据统计的。
    # K的含义:来了一个样本x,要给它分类,即求出它的y,就从数据集中,在x附近找离它最近的K个数据点,这K个数据点,类别c占的个数最多,就把x的label设为c
    # 抽样方法
        # 打乱顺序后的随机数组 = numpy.random.permutation(n_随机样本的个数)
    # API  neighbors.KNeighborsClassifier KNN建模的方法
        # knnModel = neighbors.KNeighborsClassifier(n_neigbors = 5)
            # n_neighbors    n的个数
            # 返回            KNN模型
        # knnModel.fit(tData_训练数据的属性数据,tTarget_训练数据的目标数据) KNN训练方法
        # sklearn包
            # knnModel.score(sData_测试数据的属性数据,sTarget测试数据的目标数据) KNN评分方法
            # knnModel.predict(pdata_需要预测的属性数据) --》模型预测的结果   

KNN-K近邻 源代码

import numpy

from sklearn import datasets
#引入数据集
iris = datasets.load_iris()
#查看数据的规模
iris.data.shape # shape数据的规模
#查看训练目标的总类
numpy.unique(iris.target) # count(distinct target)

#随机重排列
permutation = numpy.random.permutation(iris.target.size) # iris.target.size -->len(iris.target)

iris.data = iris.data[permutation] # 随机的分类对应的数据

iris.target = iris.target[permutation] # 重排

from sklearn import neighbors

#搭建KNN模型
knnModel = neighbors.KNeighborsClassifier(n_neighbors=3) # 训练目标为三类
#训练模型
knnModel.fit(iris.data[:100], iris.target[:100]) # 前100列

from sklearn import cross_validation

#对模型进行评价
knnModel.score(iris.data[100:], iris.target[100:]) 
cross_validation.cross_val_score(
    knnModel, 
    iris.data[100:], 
    iris.target[100:]
) # 交叉评分,三个分类的命中率,0,1,2 的命中率

#使用模型进行预测
knnModel.predict([[0.1, 0.2, 0.3, 0.4]])      

参考文献
作者A:ken

相关文章

网友评论

      本文标题:【挖掘模型】:Python-KNN算法

      本文链接:https://www.haomeiwen.com/subject/qpimxxtx.html