《机器学习实战》---第二章 k近邻算法 kNN

下面的代码是在python3中运行,
# -*- coding: utf-8 -*-
"""
Created on Tue Jul 3 17:29:27 2018 @author: Administrator
""" from numpy import * #NumPy
import operator #运算符模块 def createDataSet(): #这个只是导入数据的函数
group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]) #这个是4行2列的数组
labels=['A','A ','B','B']
return group ,labels def classify0 (inX,dataSet,labels,k) : #这个是k近邻算法的实现,要注意传入的参数有哪些.
#1,用于分类的输入向量inX;2,输入的训练样本集dataSet;3,标签向量labels;4,最后的参数k用于选择最近邻居的数目;
dataSetSize=dataSet.shape[0] #其中标签向量的元素数目和矩阵dataSet的行数相同.
diffMat=tile(inX,(dataSetSize,1))-dataSet #这里是调用了numpy的函数,tile diffMat已经是数组了 下面就是一些算法了(欧式距离的算法). 这里就是数组运算了,为了避免使用过多的for,这样可能会提升运行速度?
sqDiffMat=diffMat**2 #对数组diffMat的每个元素进行平方. python的写法就是这样简单.
sqDistances=sqDiffMat.sum(axis=1) #axis=1,表示的是按行相加. axis=0表示按列相加.
distances=sqDistances**0.5 #这个是开平方
sortedDistIndicies=distances.argsort() #返回的是从小到大的索引.关于变量的建立,还是把我不准,这个直接给了个变量名,并没有标注类型[],比如最小的数据是在第3个位置,就是2,那么第一个元素值就是2
classCount={}
for i in range(k): #这里可以认为是投票算法,要弄清它的输入和输出是什么.
voteIlabel=labels[sortedDistIndicies[i]] #确定前k个距离最小的主要分类,sortedDistIndicies[i]其实返回的是样本的位置,
classCount[voteIlabel]=classCount.get(voteIlabel,0)+1
sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True) #把'iteritems'改成了tiems,就可以在python3上运行了.
return sortedClassCount[0][0] #返回发生频率最高的,标签,,,,注意,这里返回的是标签,其实我们一直想要得到的也是某个东西的标签.返回的是我们想要的东西. group,labels=createDataSet()
print(group)
print(labels) a=classify0([0,0],group,labels,3)
print(a)
运行结果

《机器学习实战》---第二章 k近邻算法 kNN的更多相关文章
- <机器学习实战>读书笔记--k邻近算法KNN
k邻近算法的伪代码: 对未知类别属性的数据集中的每个点一次执行以下操作: (1)计算已知类别数据集中的点与当前点之间的距离: (2)按照距离递增次序排列 (3)选取与当前点距离最小的k个点 (4)确定 ...
- 机器学习(1)——K近邻算法
KNN的函数写法 import numpy as np from math import sqrt from collections import Counter def KNN_classify(k ...
- k近邻算法(KNN)
k近邻算法(KNN) 定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别. from sklearn.model_selection ...
- 《机实战》第2章 K近邻算法实战(KNN)
1.准备:使用Python导入数据 1.创建kNN.py文件,并在其中增加下面的代码: from numpy import * #导入科学计算包 import operator #运算符模块,k近邻算 ...
- 机器学习(四) 分类算法--K近邻算法 KNN (上)
一.K近邻算法基础 KNN------- K近邻算法--------K-Nearest Neighbors 思想极度简单 应用数学知识少 (近乎为零) 效果好(缺点?) 可以解释机器学习算法使用过程中 ...
- 机器学习(四) 机器学习(四) 分类算法--K近邻算法 KNN (下)
六.网格搜索与 K 邻近算法中更多的超参数 七.数据归一化 Feature Scaling 解决方案:将所有的数据映射到同一尺度 八.scikit-learn 中的 Scaler preprocess ...
- 一看就懂的K近邻算法(KNN),K-D树,并实现手写数字识别!
1. 什么是KNN 1.1 KNN的通俗解释 何谓K近邻算法,即K-Nearest Neighbor algorithm,简称KNN算法,单从名字来猜想,可以简单粗暴的认为是:K个最近的邻居,当K=1 ...
- SIGAI机器学习第七集 k近邻算法
讲授K近邻思想,kNN的预测算法,距离函数,距离度量学习,kNN算法的实际应用. KNN是有监督机器学习算法,K-means是一个聚类算法,都依赖于距离函数.没有训练过程,只有预测过程. 大纲: k近 ...
- k近邻算法(knn)的c语言实现
最近在看knn算法,顺便敲敲代码. knn属于数据挖掘的分类算法.基本思想是在距离空间里,如果一个样本的最接近的k个邻居里,绝大多数属于某个类别,则该样本也属于这个类别.俗话叫,"随大流&q ...
随机推荐
- 大型情感类电视连续剧--Android高德之旅(2)地图类型
总要说两句 今天继续我们的Android高德之旅,上一篇已经能够显示最主要的地图了.有主要的放大缩小功能.还有最后做的点击3D旋转.倾斜视角的效果.今天这篇文章来记录一下高德地图的5种地图类型. (其 ...
- 在oracle存储过程中创建暂时表
在oracle的存储过程中,不能直接使用DDL语句,比方create.alter.drop.truncate等. 那假设我们想在存储过程中建立一张暂时表就仅仅能使用动态sql语句了: create o ...
- 解决wget下载文件名乱码的一些方法
在下载用apache或者nginx做的索引目录时,遇到文件名乱码问题.搜索了不少资料,尝试了好几种方案,大家可以结合使用. 一般情况下加上–restrict-file-names=nocontrol参 ...
- Docs-->.NET-->API reference-->System.Web.UI-->Control-->Methods-->FindControl
https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.control.findcontrol?view=netframework-4.7 ...
- 突破极限 解决大硬盘上安装Unix新思路
一.问题提出 硬盘越做越大,然我喜欢让我忧.10年前就遇到过在586电脑BIOS不认识超过8.4G容量硬盘的问题,以及Windows Nt操作系统不认大硬盘(容量超过8.4G)的问题,对于Linux ...
- python2 pip安装包等出现各种编码错误UnicodeDecodeError: 'ascii'(/或者utf-8) codec can't decode byte 0xd2...
1.问题描述: python2环境,pip安装包时报错UnicodeDecodeError: 'ascii'(/或者utf-8) codec can't decode byte 0xd2... 类似如 ...
- less---查看文件
- groups---输出指定用户所在组的组成员,
groups命令 groups命令在标准输入输出上输出指定用户所在组的组成员,每个用户属于/etc/passwd中指定的一个组和在/etc/group中指定的其他组. 语法 groups(选项)( ...
- zookeeper提供了什么
简单的说,zookeeper=文件系统+通知机制. 每个子目录项如 NameService 都被称作为 znode,和文件系统一样,我们能够自由的增加.删除znode,在一个znode下增加.删除子z ...
- [leetcode] Palindrome Number(不使用额外空间)
本来推断回文串是一件非常easy的事情,仅仅须要反转字符串后在与原字符串相比較就可以.这道题目明白说明不能使用额外的空间.那么使用将其分解连接成字符串的方法便不是可行的.仅仅好採用数学的方式: 每次取 ...