python读取鸢尾花数据集并进行训练测试集分割
来源:互联网 发布:锤子电梯破解软件 编辑:程序博客网 时间:2024/05/22 06:19
数据分割时遇到一些list方面问题,在此记录,谨防下次出现类似错误!
# -*- coding: utf-8 -*-from numpy import *import operatorfrom os import listdir# x,y=getDataSet('iris.data.txt',4)#tr1,tr2,ts1,ts2 = dataDiv(x,y)def getDataSet(filename,numberOfFeature): #将数据集读入内存 fr = open(filename) numberOfLines = len(fr.readlines()) #get the number of lines in the file file.readlines()是把文件的全部内容读到内存,并解析成一个list returnMat = zeros((numberOfLines,numberOfFeature)) #prepare matrix to return 3代表数据集中特征数目### classLabelVector = [] #prepare labels return fr = open(filename) index = 0 for line in fr.readlines(): line = line.strip() #strip() 参数为空时,默认删除空白符(包括'\n', '\r', '\t', ' ') listFromLine = line.split(',') #split 以什么为标准分割一次 分成数组中的每个元素 returnMat[index,:] = listFromLine[0:numberOfFeature] #classLabelVector.append(int(listFromLine[-1])) #append() 方法向列表的尾部添加一个新的元素 if listFromLine[-1] == 'Iris-setosa' : classLabelVector.append(1) elif listFromLine[-1] == 'Iris-versicolor' : classLabelVector.append(2) else: #elif listFromLine[-1] == 'Iris-virginica' : classLabelVector.append(3) index += 1 return returnMat,classLabelVector def dataDiv(inMat,classVector): <span style="color:#ff0000;">#注意!!!!!!! trainData[i,:] = inMat[i,:] list类型这样操作错误# TypeError: list indices must be integers, not tuple#访问二维数组inMat的第i行 不能写成inMat[i,:]是错误的;正确应是inMat[i][:], # 而numpy中定义的array变量可以通过inMat[i,:]访问 注意list和array区别</span># 鸢尾花数据集共三类,每类50个数据,50(35训练集 / 15测试集) #方法一 # trainData = [] # trainLabel = []# testData = []# testLabel = []# for i in range(0,35) : # trainData.append(inMat[i][:])# trainLabel.append(classVector[i])# for i in range(0,35) :# trainData.append(inMat[50+i][:])# trainLabel.append(classVector[50+i])# for i in range(0,35) :# trainData.append(inMat[100+i][:])# trainLabel.append(classVector[100+i])# # for i in range(0,15) :# testData.append(inMat[35+i][:])# testLabel.append(classVector[35+i])# for i in range(0,15) :# testData.append(inMat[85+i][:])# testLabel.append(classVector[85+i])# for i in range(0,15) :# testData.append(inMat[135+i][:])# testLabel.append(classVector[135+i]) # 方法二 trainData = zeros((105,4)) trainLabel = zeros((105,4)) testData = zeros((45,4)) testLabel = zeros((45,4)) index = 0 trindice = range(0,35)+range(50,85)+range(100,135) tsindice = range(35,50)+range(85,100)+range(135,150) <span style="color:#ff0000;">#不能写成 [range(0,35)+range(50,85)+range(100,135)] 不能加两个方括号 # 比如 [range(0,5)+range(8,10)] 代表 一个list类型变量 size=1 里面存了一个7维list # range(0,5)+range(8,10) 代表 一个list类型变量 size=7 #ValueError: could not broadcast input array from shape (105,4) into shape (4)</span> for i in trindice : trainData[index] = inMat[i] trainLabel[index] = classVector[i] index+=1 index = 0 for i in tsindice : testData[index] = inMat[i] testLabel[index] = classVector[i] index+=1 #方法一和方法二实现的功能一致 但数据存放格式存在差别,方法一存放为list类型,方法二存放为arry类型 return trainData,trainLabel,testData,testLabel
1 0
- python读取鸢尾花数据集并进行训练测试集分割
- 鸢尾花数据集—python可视化
- 用Python进行训练/测试集分割和交叉验证
- Python分割训练集和测试集
- 通过鸢尾花数据集理解深度神经网络(DNN)建模、训练、验证和预测过程
- logistic regression 处理鸢尾花数据集
- Iris DataSet 鸢尾花数据集
- 实现鸢尾花数据集分类
- sklearn库的体验-鸢尾花训练集
- RBF神经网络对iris鸢尾花数据集进行分类识别
- 【python数据挖掘课程】十九.鸢尾花数据集可视化、线性回归、决策树花样分析
- Caffe 之 使用非图片的鸢尾花(IRIS)数据集(hdf5格式) 训练网络模型
- 《Python机器学习》笔记--感知机分类鸢尾花数据集
- java实现k-means算法(用的鸢尾花iris的数据集,从mysq数据库中读取数据)
- ChiMerge 算法: 以鸢尾花数据集为例
- ChiMerge 算法: 以鸢尾花数据集为例
- Google机器学习(二) 鸢尾花数据集 load_iris
- 【Python数据挖掘课程】四.决策树DTC数据分析及鸢尾数据集分析
- NBUT [1464] Biggest Number dfs
- 203. Remove Linked List Elements
- 【SSH进阶之路】Spring简介,搭建Spring环境——轻量级容器框架(一)
- Xcode7.x如何添加pch文件
- NoSql之相逢Redis
- python读取鸢尾花数据集并进行训练测试集分割
- OAuth机制
- 初学android app开发(列表以及其事件)
- yii2增加验证码详细步骤
- Android绘图之:弧形绘制
- 机器学习(Machine Learning)大家与资源
- 关于STM32的FLASH操作
- CentOS 6.5 安装 Nginx 1.7.8 教程
- android 如何清理无用的资源文件(studio)