python导入鸢尾花数据集(python鸢尾花数据集分析)

http://www.itjxue.com  2023-04-01 12:00  来源:未知  点击次数: 

Python+libsvm-2(实例-使用libsvm对鸢尾花进行分类)

这里使用的是lab课上老师提供的数据集

但是不符合libsvm中要求的数据格式,所以需要将原始数据转换成libsvm中要求的。

复制Excel表格中的数据到一个新的txt文件中

我这里把原来的数据集分成了两个,一个用作train 一个用作test

3、鸢尾花数据集

鸢尾花数据集是机器学习和统计学中的一个经典数据集,数据包含每朵鸢尾花花瓣的长度和宽度、花萼的长度和宽度(data),以及每朵花对应的种类(target),还有对数据的一些说明(DESCR)、种类名(target_names)、特征名(feature_names)。

我们利用这个数据建立一个最简单的机器学习模型-k近邻算法。

输出

load_iris返回的对象是一个Bunch对象,与字典非常相似,里面包含键和值。其中DESCR键对应的值是数据集的简要说明,target即Y值,target_names即花的种类,feature_names即特征名,data即X值。

可以看到记录了150条数据,有4个特征,花瓣的长度、花瓣的宽度、花萼的长度、花萼的宽度。

模型精度约为97%。

十分钟上手sklearn 安装,获取数据,数据预处理

更多干货就在我的个人博客 欢迎关注!

sklearn是机器学习中一个常用的python第三方模块,对常用的机器学习算法进行了封装

其中包括:

1.分类(Classification)

2.回归(Regression)

3.聚类(Clustering)

4.数据降维(Dimensionality reduction)

5.常用模型(Model selection)

6.数据预处理(Preprocessing)

本文将从sklearn的安装开始讲解,由浅入深,逐步上手sklearn。

sklearn官网:

sklearn API:

sklearn的目前版本是0.19.1

依赖包:

Python (=2.6或=3.3)

NumPy(=1.6.1)

SciPy(=0.9)

使用pip安装,terminal直接执行即可

使用Anaconda安装,推荐Anaconda,因为里面已经内置了NumPy,SciPy等常用工具

安装完成后可以在python中检查一下版本,import sklearn不报错,则表示安装成功

机器学习算法往往需要大量的数据,在skleran中获取数据通常采用两种方式,一种是使用自带的数据集,另一种是创建数据集

sklearn自带了很多数据集,可以用来对算法进行测试分析,免去了自己再去找数据集的烦恼

其中包括:

鸢尾花数据集:load_iris()

手写数字数据集:load_digitals()

糖尿病数据集:load_diabetes()

乳腺癌数据集:load_breast_cancer()

波士顿房价数据集:load_boston()

体能训练数据集:load_linnerud()

这里以鸢尾花数据集为例导入数据集

使用skleran的样本生成器(samples generator)可以创建数据,sklearn.datasets.samples_generator中包含了大量创建样本数据的方法。

这里以分类问题创建样本数据

参数说明:

n_features :特征个数= n_informative() + n_redundant + n_repeated

n_informative:多信息特征的个数

n_redundant:冗余信息,informative特征的随机线性组合

n_repeated :重复信息,随机提取n_informative和n_redundant 特征

n_classes:分类类别

n_clusters_per_class :某一个类别是由几个cluster构成的

random_state:随机种子,使得实验可重复

n_classes*n_clusters_per_class 要小于或等于 2^n_informative

打印结果:

机器学习的过程正往往需要对数据集进行划分,常分为训练集,测试集。sklearn中的model_selection为我们提供了划分数据集的方法。

以鸢尾花数据集为例进行划分

参数说明:

arrays:样本数组,包含特征向量和标签

test_size:

float-获得多大比重的测试样本 (默认:0.25)

int - 获得多少个测试样本

train_size: 同test_size

random_state:int - 随机种子(种子固定,实验可复现)

shuffle - 是否在分割之前对数据进行洗牌(默认True)

后面我们训练模型使用的数据集都基于此

我们为什么要进行数据预处理?

通常,真实生活中,我们获得的数据中往往存在很多的无用信息,甚至存在错误信息,而机器学习中有一句话叫做"Garbage in,Garbage out",数据的健康程度对于算法结果的影响极大。数据预处理就是让那些冗余混乱的源数据变得能满足其应用要求。

当然,仅仅是数据预处理的方法就可以写好几千字的文章了,在这里只谈及几个基础的数据预处理的方法。

skleran中为我们提供了一个数据预处理的package:preprocessing,我们直接导入即可

下面的例子我们使用:[[1, -1, 2], [0, 2, -1], [0, 1, -2]]做为初始数据。

基于mean和std的标准化

打印结果:

规范化到一定区间内 feature_range为数据规范化的范围

打印结果:

首先求出样本的p-范数,然后该样本的所有元素都要除以该范数,这样最终使得每个样本的范数都为1

打印结果:

本文介绍了sklearn的安装,sklearn导入数据集,创建数据集的基本方法,对数据预处理的常用方法进行了介绍。

下一篇,将重点讲解如何使用sklearn进行特征提取,使用sklearn实现机器学习经典算法,模型的保存等内容。

python 和鸢尾花数据集

xrange(3)的作用可以简单理解为生成了一个数列:[0, 1, 2]

因此,变量t 的取值依次为0,1,2。

导入鸢尾花数据集OSError: Initializing from file failed

之前是这样导入鸢尾花数据集:data = pd.read_csv('D:\MNIST数据集\iris.data')

出现这个问题:OSError: Initializing from file failed

可能是由于我的文件命名中有中文,发现调用pandas的read_csv()方法时,默认使用C engine作为parser engine,而当文件名中含有中文的时候,用C engine在部分情况下就会出错。所以在调用read_csv()方法时指定engine为Python就可以解决问题了。

解决办法:data = pd.read_csv('D:\MNIST数据集\iris.data', engine='python' )

参考文章:

(责任编辑:IT教学网)

更多

推荐CSS教程文章