zoukankan      html  css  js  c++  java
  • K最近邻kNN-学习笔记

    # -*- coding: utf-8 -*-
    """
    Created on Thu Jan 24 09:34:32 2019
    
    1. 翼尾花数据
    2. 用 KNeighborsClassifier
    
    """
    
    # -*- coding:utf-8 -*-
    import numpy as np
    from sklearn.neighbors import KNeighborsClassifier
    
     
    from sklearn.datasets import load_iris
    iris = load_iris() #载入数据
    features, labels = np.array(iris.data), np.array(pd.Categorical.from_codes(iris.target, iris.target_names).tolist()) #多个连续自变量 和 一个离散因变量 
    feature_names    = iris.feature_names 
    
    from sklearn.model_selection import train_test_split
    x_train,x_test,y_train,y_test= train_test_split(features,labels,test_size =0.33,shuffle=True,random_state=42) 
    #shuffle随机 random_state设定随机种子 test_size测试数据占比33% 
    
    def accuracy(test_labels, pred_lables):
        correct = np.sum(test_labels == pred_lables)
        n = len(test_labels)
        return float(correct) / n
    
    knn = KNeighborsClassifier(n_neighbors=5)
    y_test_pre = knn.fit(x_train, y_train).predict(x_test)
    
    print(accuracy(y_test_pre, y_test)) 
    
    


    # 0.98

    改进点:

    1. 根据最近的K个值 的距离对最终结果,进行加权。

    2. 通过先验知识,对训练数据进行筛选,缩小训练样本,提高样本质量,有利于提高计算速度。

    3. 变量尽量少,这样可以提供速度。

    优点:

    1. 算法原理非常简单: 用 欧式距离最近(或曼哈顿距离)的K个样本点的分类中的众数,作为预测分类。

    2. 便于并行计算。

    3. 可以做 分类、也可以连续变量拟合预测

    缺点:

    1. 自变量必须是连续性,并且做好了归一化等处理,方便测量距离。

    2. 对于连续性因变量,只能做插值预测,不适合做外推预测。

    3. 分类新实例开销大,每次对一个测试样本,需要用到几乎全部的训练样本数据,分别计算距离

    4. 会考虑所有属性/自变量。导致计算量大。

    kNN(K-Nearest Neighbor)最邻近规则分类

    机器学习(二):k近邻法(kNN)

  • 相关阅读:
    【Hello CC.NET】巧用模板简化配置
    【Hello CC.NET】自动化发布时 Web.config 文件维护
    Hello Jexus
    【Hello CC.NET】CC.NET 实现自动化集成
    SSE和WebSocket的用法和比较
    利用canvas实现鼠标跟随效果
    使用es6制作简单数独游戏
    ppt学习(3)
    ppt学习(2)
    ppt学习(1)
  • 原文地址:https://www.cnblogs.com/andylhc/p/10312785.html
Copyright © 2011-2022 走看看