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值的 ...
随机推荐
- IDEA的一些常用设置
一.给方法之间添加分割线 效果: 二.自动导包 三.字体以及大小和行间距 四.注释的字体颜色 五.项目编码 六.省点模式(开启省点模式后会取消代码检查和提示等,需要注意) 七.代码垂直或者水平分区显示 ...
- php和js的小区别
1.今天看了下php的api感觉还可以,不是很难,可能没看到深入的地方, (1)和js很相似 目前感觉它和js的最大区别 js的 点 被替换成 -> function setCate($pa ...
- OO第三单元“技术”博客
主要针对第三单元的三次作业 JML语言的理论基础.应用工具链情况 JML指的是Java建模语言,全称是Java modeling language,是一种行为接口规范语言,可用于指定Java模块的行为 ...
- settings配置数据库和日志
数据库的配置: 一.mysql配置 pip下载pymysql,用于mysql和django的连接. 在init.py上配置pymsqy. import pymysql pymysql.install_ ...
- 算概率(dp,数论)
链接:https://ac.nowcoder.com/acm/contest/3003/C来源:牛客网 题目描述 牛牛刚刚考完了期末,尽管牛牛做答了所有 n 道题目,但他不知道有多少题是正确的. 不过 ...
- Django1.11序列化与反序列化
django序列化与反序列化 from rest_framwork import serializers serializers.ModelSerializer 模型类序列化器,必须依据模型类创建序列 ...
- 【转帖】虚拟化Pod性能比裸机还要好,原因竟然是这样!
虚拟化Pod性能比裸机还要好,原因竟然是这样! http://www.itpub.net/2020/02/27/5340/ 其实感觉 linux也可以做到 NUMA的节点优化 其实 直接在 ESXi上 ...
- AI 领域与概述
概述 数据分析行业主要的职业发展. 业务:业务分析师.数据产品经理.产品总监 技术:算法师.架构师.研发经理.研发总监 美工:BI工程师 人工智能,是数据分析的子集.人工智能主要包括 语音识别 自然语 ...
- 因子分析和PCA总结
因子分析和PCA 定义 因子分析就是数据降维工具.从一组相关变量中删除冗余或重复,把相关的变量放在一个因子中,实在不相关的因子有可能被删掉.用一组较小的“派生”变量表示相关变量,这个派生就是新的因子. ...
- Ubuntu上运行tensorflow C++的完整例子
个人博客原文:http://www.bearoom.xyz/2019/08/25/ubuntu-tensorflow-cc-example/ 之前记录的运行Tensorflow的C++接口的例子都是零 ...