python机器学习(2:KNN算法)
1、KNN
x1 = numpy.round(numpy.random.normal(115, 10, 100),2)
y1 = numpy.round(numpy.random.normal(95, 6,100),2)
x2 = numpy.round(numpy.random.normal(70, 10, 100),2)
y2 = numpy.round(numpy.random.normal(99, 6, 100),2)
a=[]
b=[]
for i in range(100):
a.append([x1[i],y1[i]])
for i in range(100):
b.append([x2[i],y2[i]])
c=a+b
dataset=array(c)
labels=[]
for i in range(100):
labels.append('*')
for i in range(100):
labels.append('o')
小编自定义两个待分类的数据,也以矩阵的形式存放入;
x=[82,94]
x=array(x)
y=[90,100]
y=array(y)
3、实现过程
# -*- coding:utf-8 -*-
import numpy
from numpy import *
import random
import pylab as pl
import operator
pl.figure(1)
pl.figure(2)
#计算样本的距离,预测类别
def classify(testdata,traindata,labels,k):
#testdate:待分类数集;traindate:分好类的数集;
#tile(a,(b,c)):将a的内容在行上复制b遍,列上复制c遍
trasize=traindata.shape[0] #得到其维数
tradis1=tile(testdata,(trasize,1))-traindata
tradis2=tradis1**2
tradis3=tradis2.sum(axis=1)
tradis=tradis3**0.5 #计算样本与训练数据的距离
sortdis=tradis.argsort()#排序
classcount={}#建立空字典
for i in range(k):#通过循环寻找k个近邻
votelabel=labels[sortdis[i]]
classcount[votelabel]=classcount.get(votelabel,0)+1
sortedclasscount=sorted(classcount.items(),key=operator.itemgetter(1),reverse=True)
return sortedclasscount[0][0]#返回占最大比例的类别
x1 = numpy.round(numpy.random.normal(115, 10, 100),2)
y1 = numpy.round(numpy.random.normal(95, 6,100),2)
x2 = numpy.round(numpy.random.normal(70, 10, 100),2)
y2 = numpy.round(numpy.random.normal(99, 6, 100),2)
a=[]
b=[]
for i in range(100):
a.append([x1[i],y1[i]])
for i in range(100):
b.append([x2[i],y2[i]])
c=a+b
dataset=array(c) #将列表转化为矩阵
labels=[]
for i in range(100):
labels.append('*')
for i in range(100):
labels.append('o')
x=[82,94]
x=array(x)
y=[90,100]
y=array(y)
k=10
labelX=classify(x,dataset,labels,k)
labelY=classify(y,dataset,labels,k)
pl.figure(1)
pl.plot(x1,y1,'*')
pl.plot(x2,y2,'o')
pl.plot(82,94,'.')
pl.plot(96,100,'.')
pl.xlabel('X')
pl.ylabel('Y')
pl.figure(2)
pl.plot(x1,y1,'*')
pl.plot(x2,y2,'o')
pl.plot(82,94,labelX)
pl.plot(96,100,labelY)
pl.show()
4、实现结果
- 引入的数据一定要看清其类别,在这里就要注意列表与矩阵的转化;
- append([x1[i],y1[i]])括号里又加中括号是因为append一次只能添入一个元素
- 将列表转化为矩阵用array
- 矩阵的平方是将矩阵内每个元素平方,与线性代数不同
python机器学习(2:KNN算法)的更多相关文章
- 使用python模拟实现KNN算法
一.KNN简介 1.KNN算法也称为K邻近算法,是数据挖掘分类技术之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表. 2.KNN算法的核心思想是如果一个样本 ...
- 菜鸟之路——机器学习之KNN算法个人理解及Python实现
KNN(K Nearest Neighbor) 还是先记几个关键公式 距离:一般用Euclidean distance E(x,y)√∑(xi-yi)2 .名字这么高大上,就是初中学的两点间的距离 ...
- 机器学习之KNN算法
1 KNN算法 1.1 KNN算法简介 KNN(K-Nearest Neighbor)工作原理:存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属 ...
- 机器学习:k-NN算法(也叫k近邻算法)
一.kNN算法基础 # kNN:k-Nearest Neighboors # 多用于解决分裂问题 1)特点: 是机器学习中唯一一个不需要训练过程的算法,可以别认为是没有模型的算法,也可以认为训练数据集 ...
- python机器学习的常用算法
Python机器学习 学习意味着通过学习或经验获得知识或技能.基于此,我们可以定义机器学习(ML)如下 - 它可以被定义为计算机科学领域,更具体地说是人工智能的应用,其为计算机系统提供了学习数据和从经 ...
- 机器学习笔记--KNN算法2-实战部分
本文申明:本系列的所有实验数据都是来自[美]Peter Harrington 写的<Machine Learning in Action>这本书,侵删. 一案例导入:玛利亚小姐最近寂寞了, ...
- Python简单实现KNN算法
__author__ = '糖衣豆豆' from numpy import * from os import listdir import operator #从列方向扩展 #tile(a,(size ...
- JavaScript机器学习之KNN算法
译者按: 机器学习原来很简单啊,不妨动手试试! 原文: Machine Learning with JavaScript : Part 2 译者: Fundebug 为了保证可读性,本文采用意译而非直 ...
- 机器学习笔记--KNN算法1
前言 Hello ,everyone. 我是小花.大四毕业,留在学校有点事情,就在这里和大家吹吹我们的狐朋狗友算法---KNN算法,为什么叫狐朋狗友算法呢,在这里我先卖个关子,且听我慢慢道来. 一 K ...
- 机器学习入门-Knn算法
knn算法不需要进行训练, 耗时,适用于多标签分类情况 1. 将输入的单个测试数据与每一个训练数据依据特征做一个欧式距离. 2. 将求得的欧式距离进行降序排序,取前n_个 3. 计算这前n_个的y值的 ...
随机推荐
- PHP实现简易微信红包算法
<?php /** * PHP实现简易的微信红包算法 * @version v1.0 * @author quetiezheng */ function getMoney($total, $pe ...
- LeJOS下eclipse通过USB连接EV3
适用情况:在eclipse安装好LeJOS插件后,再通过USB连接EV3. 第一:更新驱动 在<设备管理器-网络适配器>下更新RNDIS/Ethernet Gadget,电脑需要先连接EV ...
- continue break
#!/bin/bashfor i in `seq 10`do if ((i%3==0)) thenecho !! continue fiecho $idone 结果: ...
- h5-任意元素居中
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- MySQL-TPS,QPS到底是什么
计算TPS,QPS的方式 qps,tps是衡量数据库性能的关键指标,网上普遍有两种计算方式 TPS,QPS相关概念 QPS:Queries Per Second 查询量/秒,是一台服务 ...
- 正文内容 python3编码问题
来源:http://www.jb51.net/article/92006.htm 以下是全文: 这两天写了个监测网页的爬虫,作用是跟踪一个网页的变化,但运行了一晚出现了一个问题....希望大家不吝赐教 ...
- es和数据库关系对比
es类比传统关系型数据库: Relational DB -> Databases -> Tables -> Rows -> Columns Elasticsearch -& ...
- Mybatis之二级缓存(八)
1. 介绍 Mybatis缓存分为一级缓存和二级缓存,在本节中我们介绍下二级缓存的使用及其特性 MyBatis的一级缓存是在一个Session域内有效的,当Session关闭后,缓存内容也随之销毁.但 ...
- 和我一起从0学算法(C语言版)(四)
第三章 搜索 深度优先搜索与宽度优先搜索 定义 深度优先搜索(DFS) 过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次. 宽度优先搜索(BFS) 不考虑结果的可能位 ...
- C#——反射,自动生成添加的SQL语句
C#中的反射.是C#中特别重要也是特别神奇的特性,对后面学习框架,了解框架的原理.以及自己写框架,都是必不可少的.学习反射的过程中.总给我一种茅塞顿开的感觉,以前不懂的,现在懂了 反射的介绍:http ...