zoukankan      html  css  js  c++  java
  • K-近邻算法(KNN)

    KNN算法是采用测量不同特征向量之间的距离的方法进行分类。

    工作原理:存在一个数据集,数据集中的每个数据都有对应的标签,当输入一个新的没有标签的数据时,KNN算法找到与新数据特征量最相似的分类标签。

    KNN算法步骤:

    (1)选择邻近的数量k和距离度量方法;

    (2)找到待分类样本的k个最近邻居;

    (3)根据最邻近的类标进行多数投票。

     

    KNN算法优点:精度高,对异常值不敏感,无数据输入假定;

                   缺点:计算复杂度高,空间复杂度高。

                   适用范围:数值型、标称型

     python 代码:

    KNeighborsClassifier中的参数

    参数 含义
    n_neighbors k值,默认为5
    weights

    k个近邻样本的权重。可选值:uniform、distance,默认为uniform。

    uniform:所有最近邻样本权重一样;

    distance:权重和距离成反比;

    还可以自定义权重,即自定义一个函数,输入距离值,输出权重值。

    algorithm

    算法,可选值:'auto', 'ball_tree', 'kd_tree', 'brute'。

    'ball_tree':球树实现

    'kd_tree':KD树实现

    'brute’:蛮力实现

    'auto':会在上述三种算法中做权衡,选择一个拟合最好的最优算法。

    leaf_size

    用于控制KD树或球树停止建子树的叶子节点阈值,默认为30。这个值越小,生成的KD树或球树越大,层数越深,耗时越长。

    随着样本的增加,这个值要增加。

    metric 距离度量,默认为'minkowski' 即闵可夫斯基距离。
    p 距离度量参数metric附属参数,只用于'minkowski'中p值的选择,p=1,位曼哈顿距离,p=2位欧式距离,默认为2。
    metric_params 距离度量的其他附属参数,主要用于带权重闵可夫斯基距离的权重,以及其他一些复杂的距离度量的参数。
     n_jobs 并行处理任务数,默认值为1。
    #KNN
    1 import numpy as np 2 import pandas as pd 3 from sklearn.neighbors import KNeighborsClassifier 4 df=pd.read_csv(r'E:data analysis estclassification.csv')#训练数据集 5 df_test=pd.read_csv(r'E:data analysis estclassification_test.csv')#测试数据集 6 x=df.ix[:,:-1] #特征值 7 y=df.ix[:,-1] #目标变量 8 knn=KNeighborsClassifier(n_neighbors=5) #取得knn分类器 9 knn.fit(x,y) #导入数据进行训练 10 print(knn.predict (df_test)) #对新数据进行分类
  • 相关阅读:
    python Asyncore.dispatcher 理解
    COCOA® PROGRAMMING FOR MAC® OS X (2)- Speak Line
    COCOA® PROGRAMMING FOR MAC® OS X (1)- Get Start
    Objetive-C initialize研究
    Objetive-C +load方法研究
    Python创建多进程,用Queue传递信息
    Python 中的GIL
    IOS CrackMe 破解学习
    越狱手机发送短信
    Vue 子组件向父组件传参
  • 原文地址:https://www.cnblogs.com/niniya/p/8848550.html
Copyright © 2011-2022 走看看