# -*- 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)

K最近邻kNN-学习笔记的更多相关文章

  1. kNN算法:K最近邻(kNN,k-NearestNeighbor)分类算法

    一.KNN算法概述 邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它 ...

  2. K最近邻(KNN,k-Nearest Neighbor)准确理解

    K最近邻(KNN,k-Nearest Neighbor)准确理解 用了之后,发现我用的都是1NN,所以查阅了一下相关文献,才对KNN理解正确了,真是丢人了. 下图中,绿色圆要被决定赋予哪个类,是红色三 ...

  3. KNN学习笔记

    简单地说,KNN算法就是通过测量不同特征值之间的距离来对特征进行分类的一种算法. 优点:精度高.对异常值不敏感.无数据输入假定. 缺点:计算复杂度高.空间复杂度高. 适用数据范围:数值型和标称型. 工 ...

  4. K-means、KNN学习笔记

    1.K-means:聚类算法,无监督 输入:k, data[n]; (1) 选择k个初始中心点,例如c[0]=data[0],…c[k-1]=data[k-1]; (2) 对于data[0]….dat ...

  5. bzoj 1598: [Usaco2008 Mar]牛跑步 [k短路 A*] [学习笔记]

    1598: [Usaco2008 Mar]牛跑步 题意:k短路 ~~貌似A*的题目除了x数码就是k短路~~ \[ f(x) = g(x) + h(x) \] \(g(x)\)为到达当前状态实际代价,\ ...

  6. 机器学习2—K近邻算法学习笔记

    Python3.6.3下修改代码中def classify0(inX,dataSet,labels,k)函数的classCount.iteritems()为classCount.items(),另外p ...

  7. 转载: scikit-learn学习之K最近邻算法(KNN)

    版权声明:<—— 本文为作者呕心沥血打造,若要转载,请注明出处@http://blog.csdn.net/gamer_gyt <—— 目录(?)[+] ================== ...

  8. 学习笔记之k-nearest neighbors algorithm (k-NN)

    k-nearest neighbors algorithm - Wikipedia https://en.wikipedia.org/wiki/K-nearest_neighbors_algorith ...

  9. opencv2.4.13+python2.7学习笔记--使用 knn对手写数字OCR

    阅读对象:熟悉knn.了解opencv和python. 1.knn理论介绍:算法学习笔记:knn理论介绍 2. opencv中knn函数 路径:opencv\sources\modules\ml\in ...

随机推荐

  1. qsort代码(pascal/c/c++)与思想及扩展(随机化,TopK)

    1.快速排序思想:从一堆数A中找到一个数x,然后把这堆数x分成两堆B,C,B堆的数小于(或小于等于)该数,放在左边,C堆的数大于(或大于等于)该数,放在右边,有可能把该数x单独分开,放在中间.然后对小 ...

  2. linux下设置默认路径

    查看文件: vim ~/.bash_profile 在bash_profile文件下以编辑模式插入以下代码:其中,/xxx/myname即为要设置的默认路径 SYSTEM=`uname -s` cas ...

  3. poj 3061(二分 or 尺取法)

    传送门:Problem 3061 https://www.cnblogs.com/violet-acmer/p/9793209.html 马上就要去上课了,先献上二分AC代码,其余的有空再补 题意: ...

  4. 用socket写一个简单的客户端和服务端程序

    用来练手写写socket代码 客户端代码 #include <stdio.h> #include <sys/types.h> #include <sys/socket.h ...

  5. SDRAM学习笔记(二)

    上一篇博客主要讲解了一下SDRAM整体结构以及PCB方面的注意事项.接下来讲解一下需要用到的一些命令. 1.常用命令的缩写 上述是常用到的一些指令集. 2.模式寄存器   (1)突发长度 通过对A0~ ...

  6. sql server复制数据到excel格式变成字符串

    sql server复制数据到excel格式变成字符串,结果数据都保存在第一个格子里面. 我点击连同标题一起复制,然后粘贴到excel,结果是这样子的.... 这不是我想要的结果,在网上查询了好多,结 ...

  7. JUnit报错 java.lang.Exception:No tests found matching

    将 @RunWith(SpringRunner.class)@SpringBootTestpublic class BusinessTest { @Test public void getList() ...

  8. 在 .NET Framework 4.0 的程序中使用 .NET Framework 2.0 的程序集

    场景 在 目标框架 为 .NET Framework 4 的程序中,引用 目标框架 为 .NET Framework 2.0 的程序集,并使用 .NET Framework 2.0 程序集中的类型或者 ...

  9. Easyui和IE浏览器的兼容问题

    现在Easyui版本已经更新到1.3.4,今天下载最新的版本,同时下载了IETestert软件,分别模拟IE浏览器5.5,6.0,7.0,8.0和9.0的环境进行测试. Easyui1.3.3与1.3 ...

  10. Git Bash使用详细教程

    https://blog.csdn.net/wangrenbao123/article/details/55511461/