# -*- coding: utf-8 -*-
"""
Created on Fri Dec 29 13:13:44 2017 @author: markli
"""
import numpy as np;
#两点之间的距离采用欧式几何距离
'''
采用欧式距离进行K最小临近分类
x 未知分类点 m*1 向量
y n个测试样本点 m*n 维向量
'''
def ComputeDistance(x,y):
m = len(x); #获取维度数量
#print(m);
tempeye = -np.eye(m);
tempone = np.ones((1,m));
C = np.vstack((tempone,tempeye));#中间过渡矩阵 m+1 * m 按列合并,列数不变扩张行
translateMatrix = np.hstack((x,y)); #按行合并,行数不变,扩张列
tempresult = np.dot(translateMatrix,C);
result = np.multiply(tempresult,tempresult);
#result = [d**2 for d in np.array(tempresult)];
result = np.sum(result,axis=0)
distance = [pow(d,1/m) for d in np.array(result)];
return distance; '''
k 选取点的个数
distance 带预测点与每个样本点的距离
labels 每个样本点的类别标记
return 返回距离最近的k的样本点的类别标记
'''
def KNN(k,distance,labels):
dis_label = [];
for i in range(len(labels)):
tup = (distance[i],labels[i]);
dis_label.append(tup);
dis_label = sorted(dis_label,lambda x:x[0]);
Kmin = [];
for i in range(k-1):
label = dis_label[i][1];
if label not in Kmin:
Kmin.append(label);
return Kmin; #sklearn 中的KNN
# -*- coding: utf-8 -*-
"""
Created on Sat Dec 30 09:36:18 2017 @author: markli
"""
from sklearn import neighbors;
from sklearn import datasets;
import numpy as np;
import matplotlib.pyplot as plt; KNN = neighbors.KNeighborsClassifier(n_neighbors=5,weights='distance');
iris = datasets.load_iris(); #print(iris); KNN.fit(iris.data,iris.target);
x = [0.2,0.4,0.3,0.5];
y = KNN.predict(np.array(x).reshape((1,4)));
print(iris.target_names[y]); #k = neighbors.NearestNeighbors();
#A = k.kneighbors_graph(iris.data,n_neighbors=5,mode='distance');

Python3 k-邻近算法(KNN)的更多相关文章

  1. k邻近算法(KNN)实例

    一 k近邻算法原理 k近邻算法是一种基本分类和回归方法. 原理:K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例,这K个实例的多数属于某个类,就把该输入实 ...

  2. <机器学习实战>读书笔记--k邻近算法KNN

    k邻近算法的伪代码: 对未知类别属性的数据集中的每个点一次执行以下操作: (1)计算已知类别数据集中的点与当前点之间的距离: (2)按照距离递增次序排列 (3)选取与当前点距离最小的k个点 (4)确定 ...

  3. Python实现kNN(k邻近算法)

    Python实现kNN(k邻近算法) 运行环境 Pyhton3 numpy科学计算模块 计算过程 st=>start: 开始 op1=>operation: 读入数据 op2=>op ...

  4. 《机器学习实战》学习笔记一K邻近算法

     一. K邻近算法思想:存在一个样本数据集合,称为训练样本集,并且每个数据都存在标签,即我们知道样本集中每一数据(这里的数据是一组数据,可以是n维向量)与所属分类的对应关系.输入没有标签的新数据后,将 ...

  5. 监督学习——K邻近算法及数字识别实践

    1. KNN 算法 K-近邻(k-Nearest Neighbor,KNN)是分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似( ...

  6. k近邻算法(KNN)

    k近邻算法(KNN) 定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别. from sklearn.model_selection ...

  7. kaggle赛题Digit Recognizer:利用TensorFlow搭建神经网络(附上K邻近算法模型预测)

    一.前言 kaggle上有传统的手写数字识别mnist的赛题,通过分类算法,将图片数据进行识别.mnist数据集里面,包含了42000张手写数字0到9的图片,每张图片为28*28=784的像素,所以整 ...

  8. 机器学习算法及代码实现–K邻近算法

    机器学习算法及代码实现–K邻近算法 1.K邻近算法 将标注好类别的训练样本映射到X(选取的特征数)维的坐标系之中,同样将测试样本映射到X维的坐标系之中,选取距离该测试样本欧氏距离(两点间距离公式)最近 ...

  9. [机器学习实战] k邻近算法

    1. k邻近算法原理: 存在一个样本数据集,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系.输入没有标签的新数据后,将新数据的每个特征与样本集中数据对 ...

  10. 机器学习(四) 机器学习(四) 分类算法--K近邻算法 KNN (下)

    六.网格搜索与 K 邻近算法中更多的超参数 七.数据归一化 Feature Scaling 解决方案:将所有的数据映射到同一尺度 八.scikit-learn 中的 Scaler preprocess ...

随机推荐

  1. 洛谷P2605 基站选址

    神TM毒瘤线段树优化DP......新姿势get. 题意:有n个村庄,在里面选不多于k个建立基站. 建立基站要ci的费用.如果一个村庄方圆si内没有基站,那么又要支出wi的费用.求最小费用. 解:很显 ...

  2. yolo2详解

    转自:https://blog.csdn.net/u014380165/article/details/77961414 YOLOV2要是YOLO的升级版(Better faster) Better ...

  3. TradingView学习记录

    官网:https://cn.tradingview.com   申请图表库 用本地服务器打开 二:文件目录 三:基础概念 3.1 UDF:通用数据饲料(Universal Data Feed)     ...

  4. Jquery教你写一个简单的轮播.

    这个我表示写的不咋地-_-//,但是胜在简单,可优化性不错. 实际上我本来想写个复杂点的结构的,但是最近忙成狗了!!!!所以大家就讲究着看吧 HTML结构 <div class="ba ...

  5. jQuery中Animate进阶用法(二)

    Step Type: Function( Number now, Tween tween )每个动画元素的每个动画属性将调用的函数.这个函数为修改Tween 对象提供了一个机会来改变设置中得属性值. ...

  6. FFT(Rock Paper Scissors Gym - 101667H)

    题目链接:https://vjudge.net/problem/Gym-101667H 题目大意:首先给你两个字符串,R代表石头,P代表布,S代表剪刀,第一个字符串代表第一个人每一次出的类型,第二个字 ...

  7. Windows运行命令

    winver---------检查Windows版本 wmimgmt.msc----打开windows管理体系结构 wupdmgr--------windows更新程序 winver--------- ...

  8. python多个分割符split字符串

    python中string自带的split不支持多个分隔符同时切分,用正则 import re line='hello,world' lineLists = re.split('[,,..??]',l ...

  9. 【最简单的方法】js判断字符串是否为JSON格式(20180115更新)

    前言 针对 “js判断字符串是否为JSON格式” 这个问题,在网上查了许多资料,都没找到自己想要的答案. 但是看到这个帖子<js判断字符串是否为JSON格式>后,突然灵光一闪,想到一种很简 ...

  10. YOLOv2训练自己的数据集(VOC格式)

    下周试试,参考:http://blog.csdn.net/ch_liu23/article/details/53558549 http://blog.csdn.net/sinat_30071459/a ...