使用KNN对iris数据集进行分类——python

filename=‘g:\data\iris.csv‘

lines=fr.readlines()
Mat=zeros((len(lines),4))
irisLabels=[]
index=0
for line in lines:
line=line.strip()
if len(line)>0:
listFromline=line.split(‘,‘)
irisLabels.append(listFromline[-1])
Mat[index,:]=listFromline[0:4]
index=index+1
Mat=Mat[0:150,:]
rowCount=Mat.shape[0]
hoRatio=0.2
testNum=int(hoRatio*rowCount)
train=Mat.copy()
train=train[testNum:,:]
trainLabel=irisLabels[testNum:]
def classify1(inX,train,labels,k):
rowCount=train.shape[0]
diffMat=tile(inX,(rowCount,1))-train
diffMat=diffMat**2
sqDistances=diffMat.sum(1)
distances=sqDistances**0.5
sortedDistIndices=distances.argsort()
classCount={}
for i in range(k):
voteLabels=labels[sortedDistIndices[i]]
classCount[voteLabels]=classCount.get(voteLabels,0)+1
sortedClassCount=sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True)
return sortedClassCount[0][0]
errorCount=0
for i in range(testNum):
classifyResult=classify1(Mat[i,:],train,trainLabel,3)
if(irisLabels[i]!=classifyResult): errorCount+=1
print errorCount

时间: 2024-10-12 22:04:11

使用KNN对iris数据集进行分类——python的相关文章

关于IRIS数据集的Python分析-一份带注释的代码

所有内容都在python源码和注释里,可运行! ########################### #说明: # 撰写本文的原因是,笔者在研究博文“http://python.jobbole.com/83563/”中发现 # 原内容有少量笔误,并且对入门学友缺少一些信息.于是笔者做了增补,主要有: # 1.查询并简述了涉及的大部分算法: # 2.添加了连接或资源供进一步查询: # 3.增加了一些lib库的基本操作及说明: # 4.增加了必须必要的python的部分语法说明: # 5.增加了对

用Python实现岭回归算法与Lasso回归算法并处理Iris数据集

在介绍岭回归算法与Lasso回归算法之前,先要回顾一下线性回归算法.根据线性回归模型的参数估计公式可知可知,得到的前提是矩阵可逆.换句话说就是样本各个特征(自变量)之间线性无关.然而在实际问题中,常常会出现特征之间出现多重共线性的情况,使得行列式的值接近于0,最终造成回归系数无解或者无意义. 为了解决这个问题,岭回归算法的方法是在线性回归模型的目标函数之上添加一个l2的正则项,进而使得模型的回归系数有解.具体的岭回归目标函数可表示为如下: 在Python中,岭回归算法的实现方法如下. 在Pyth

从Iris数据集开始---机器学习入门

代码多来自<Introduction to Machine Learning with Python>. 该文集主要是自己的一个阅读笔记以及一些小思考,小总结. #前言 在开始进行模型训练之前,非常有必要了解准备的数据:数据的特征,数据和目标结果之间的关系是什么?而且这可能是机器学习过程中最重要的部分. 在开始使用机器学习实际应用时,有必要先回答下面几个问题: 解决的问题是什么?现在收集的数据能够解决目前的问题吗? 该问题可以转换成机器学习问题吗?如果可以,具体属于哪一类?监督 or 非监督

85、使用TFLearn实现iris数据集的分类

''' Created on 2017年5月21日 @author: weizhen ''' #Tensorflow的另外一个高层封装TFLearn(集成在tf.contrib.learn里)对训练Tensorflow模型进行了一些封装 #使其更便于使用. #使用TFLearn实现分类问题 #为了方便数据处理,本程序使用了sklearn工具包, #更多信息可以参考http://scikit-learn.org from sklearn import model_selection from sk

数据分析经典案例-鸢尾花(iris)数据集分析

鸢尾花(iris)数据集分析 Gaius_Yao 关注 0.8 2018.12.23 14:06 字数 724 阅读 4827评论 0喜欢 5   Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例.数据集内包含 3 类共 150 条记录,每类各 50 个数据,每条记录都有 4 项特征:花萼长度.花萼宽度.花瓣长度.花瓣宽度,可以通过这4个特征预测鸢尾花卉属于(iris-setosa, iris-versicolour, iris-virginica)中的哪一品种.

菜鸟之路——机器学习之KNN算法个人理解及Python实现

KNN(K Nearest Neighbor) 还是先记几个关键公式 距离:一般用Euclidean distance   E(x,y)√∑(xi-yi)2 .名字这么高大上,就是初中学的两点间的距离嘛. 还有其他距离的衡量公式,余弦值(cos),相关度(correlation) 曼哈顿距离(manhatann distance).我觉得针对于KNN算法还是Euclidean distance最好,最直观. 然后就选择最近的K个点.根据投票原则分类出结果. 首先利用sklearn自带的的iris

KNN及其改进算法的python实现

一. 马氏距离 我们熟悉的欧氏距离虽然很有用,但也有明显的缺点.它将样品的不同属性(即各指标或各变量)之间的差别等同看待,这一点有时不能满足实际要求.例如,在教育研究中,经常遇到对人的分析和判别,个体的不同属性对于区分个体有着不同的重要性.因此,有时需要采用不同的距离函数. 如果用dij表示第i个样品和第j个样品之间的距离,那么对一切i,j和k,dij应该满足如下四个条件:    ①当且仅当i=j时,dij=0 ②dij>0 ③dij=dji(对称性) ④dij≤dik+dkj(三角不等式) 显

Faster-RCNN+ZF用自己的数据集训练模型(Python版本)

说明:本博文假设你已经做好了自己的数据集,该数据集格式和VOC2007相同.下面是训练前的一些修改. (做数据集的过程可以看这里) Faster-RCNN源码下载地址: Matlab版本:https://github.com/ShaoqingRen/faster_rcnn Python版本:https://github.com/rbgirshick/py-faster-rcnn 本文用到的是Python版本,在Linux下运行. 准备工作: 1.配置caffe 这个不多说,网上教程很多. 2.其

sklearn训练感知器用iris数据集

简化版代码 1 from sklearn import datasets 2 import numpy as np 3 4 #获取data和类标 5 iris = datasets.load_iris() 6 X = iris.data[:,[2,3]] 7 y = iris.target 8 9 #测试样本和训练样本三七分 10 from sklearn.model_selection import train_test_split 11 X_train,X_test,y_train,y_te