Python3 Knn~鸢尾花分类
2018/10/21~2
鸢尾花是一种花。。。
它又有好几种类型,这里就需要把这几种类型分辨出来
获取数据
见百度云:我的百度云、提取码:6lh4
开始了
1、准备工作
import numpy as np
import pandas as pd
import operator
2、读取数据
#得到鸢尾花的数据
def getExcel():#先打开文件再读取能避免路径或文件名出现中文名的错误f = open('iris.csv')iris=pd.read_csv(f)return iris
3、因为这些数据一开始就是干净的,所以这里不考虑清洗,直接将这些数据分为测试集和训练集就好了。随机抽取10个数据当测试集,其他的当做训练集。(ps:话说10个是不是有点少。。。)
#将鸢尾花的数据分开为测试集与训练集
def irisDataClassification(iris):#得到10个随机数indexs=np.random.permutation(len(iris))indexs=indexs[0:10]#将测试集弄出来testSet=iris.take(indexs)#总的数据集干掉测试集就是训练集trainingSet=iris.drop(indexs)sets=[testSet,trainingSet]return sets
4、knn方法,这里省去了开根号的那一步,话说开了根号比大小貌似和直接比大小没啥区别吧,还多了步运算。
这里只考虑了离相应测试数据最近的训练数据,可以优化成多个相近的训练数据,比如:和测试数据最近的3个点
#K-近邻分析
#trainingSet训练数据,testSet是测试数据
def knn(trainingSet,testSet,trainingResults):#numpy函数shape[0]返回dataSet的行数totalsSize = trainingSet.shape[0]#将测试数据变成和训练数据一样的矩阵tests = np.tile(testSet, (totalsSize, 1)) - trainingSet#二维特征相减后平方sqDiffMat = tests**2#sum()所有元素相加,sum(0)列相加,sum(1)行相加sqDistances = sqDiffMat.sum(axis=1)#返回distances中元素从小到大排序后的索引值sortedDistIndices = sqDistances .argsort()#取出第一个元素的类别voteIlabel = trainingResults[sortedDistIndices[1]]#返回第一个元素的类别return voteIlabel
5、开始调用,并看看准确率
iris=getExcel()
sets=irisDataClassification(iris)
#species是数据集中分类的那一列,这里得到了训练集的数据和训练集的答案
trainingSet=sets[1].drop(columns=['species']).values
trainingResults=sets[1]['species'].values
#测试集
testSets=sets[0].values
#记录成功的次数
sta=0
for i in testSets:#额,这里为啥是4个呢。。因为数据集中有花萼的长宽、花瓣的长宽,所以有4个testSet=[i[0],i[1],i[2],i[3]]ret=knn(trainingSet,testSet,trainingResults)#如果返回的答案和测试数据的答案一样sta+1if ret==i[4]:sta+=1
successRate=sta/len(sets[0])
print('测试成功率为:\n',successRate)
看看结果吧:
运行两次的结果。。果然10个测试集是假的呀,应该多分一点给测试集的
总结
测试集的数量不要太少,发现在下也是有数学天赋的呀,记住了
就差不多了吧
Python3 Knn~鸢尾花分类相关推荐
- KNN算法(附鸢尾花分类实现)
1.k近邻算法 k近邻学习(K-Nearest Neighbor,简称KNN)学习是一种常用的监督学习方法,其工作机制非常简单:给定测试样本,基于某种距离度量找出训练集中与其距离最近的k个样本,然 ...
- KNN算法解决鸢尾花分类案例
KNN算法解决鸢尾花分类案例 本文分别通过KNN底层算法实现和sklearn中的KNeighbors Classifier(K近邻分类模拟)和对3中不同的鸢尾花的分类. 一.K近邻(KNN)算法介绍 ...
- Knn算法实现鸢尾花分类
文章目录 前言 引例 KNN算法实现鸢尾花分类 1获取数据 2划分数据集 3特征工程:标准化数据 4模型训练 5模型评估 总结 前言 近朱者赤近墨者黑,物以类聚人以群分.KNN算法就是计算和别人和自己 ...
- KNN实现鸢尾花分类--数据可视化--根据花萼及花瓣分类--sklearn
KNN实现鸢尾花分类 一.导入相关库 二.导入数据 1.关于鸢尾花的数据 2.删除Id(不需要的)数据 3.分别利用花萼和花瓣的特征 三.训练集及测试集 1.花瓣 2.花萼 四.KNN算法 1.花瓣 ...
- 【机器学习】sklearn机器学习入门案例——使用k近邻算法进行鸢尾花分类
1 背景 这个案例恐怕已经被说的很烂了,机器学习方面不同程度的人对该案例还是有着不同的感觉.有的人追求先理解机器学习背后的理论甚至自己推导一遍相关数学公式,再用代码实现:有的人则满足于能够实现相关功能 ...
- 基于K-最近邻算法构建鸢尾花分类模型
基于K-最近邻算法构建鸢尾花分类模型 一 任务描述 鸢尾花(Iris)数据集是机器学习中一个经典的数据集.假设有一名植物学爱好者收集了150朵鸢尾花的测量数据:花瓣的长度和宽度以及花萼的长度和宽度,这 ...
- 2、python机器学习基础教程——K近邻算法鸢尾花分类
一.第一个K近邻算法应用:鸢尾花分类 import numpy as np from sklearn.datasets import load_iris from sklearn.model_sele ...
- 【神经网络学习】鸢尾花分类的实现
目录 1.问题 2.问题解决思路 3.神经网络理论准备 4.Tensor Flow编程基础 5. 鸢尾花分类神经网络实现 1.问题 鸢尾花分为:狗尾草鸢尾.杂色鸢尾.弗吉尼亚鸢尾: 通过测量:花萼长. ...
- 鸢尾花分类算法——机器学习笔记
鸢尾花分类算法--机器学习笔记 开发环境 python.pycharm.sklearn模块. 作者想说 最近正在学习机器学习和参加JavaScript的项目,现在来整理一下机器学习的一些知识点.如果有 ...
最新文章
- python fuzzy c-means demo
- 076_html5事件属性
- GM6 PageSet request didn't have target application url
- 在Bootstrap开发框架中使用bootstrap-datepicker插件
- 02-对图像进行边界填充
- body curl命令测试post_HTTP接口调试利器!4.8万Star的HTTP命令行客户端!
- 人人开源之代码生成器(renren-generator)
- PHOTOSHOP常用快捷键了
- 二进制的原码,反码,补码
- 解决jupyter notebook输出显示不完整问题
- pycharm:一直indexing,怎么解决?
- [Python3] 面向对象编程
- matlab提示利用了总线信号,Simulink 总线信号
- OSR推出在线SSL/TLS安全测试工具
- Android 切割图片
- 火车票服务端集成总结
- Android 内置第三方app
- java 和 c# 下的RSA证书+AES+DES加解密实现
- APP界面设计指南|APP界面设计师必备信息图
- qt开发是使用QT creator 还是用VS+qt?