作为Python中经典的机器学习模块,sklearn围绕着机器学习提供了很多可直接调用的机器学习算法以及很多经典的数据集,本文就对sklearn中专门用来得到已有或自定义数据集的datasets模块进行详细介绍;

datasets中的数据集分为很多种,本文介绍几类常用的数据集生成方法,本文总结的所有内容你都可以在sklearn的官网:

http://scikit-learn.org/stable/modules/classes.html#module-sklearn.datasets

中找到对应的更加详细的英文版解释;

1 自带的经典小数据集

1.1 波士顿房价数据(适用于回归任务)

这个数据集包含了506处波士顿不同地理位置的房产的房价数据(因变量),和与之对应的包含房屋以及房屋周围的详细信息(自变量),其中包含城镇犯罪率、一氧化氮浓度、住宅平均房间数、到中心区域的加权距离以及自住房平均房价等13个维度的数据,因此,波士顿房价数据集能够应用到回归问题上,这里使用load_boston(return_X_y=False)方法来导出数据,其中参数return_X_y控制输出数据的结构,若选为True,则将因变量和自变量独立导出;

from sklearn importdatasets'''清空sklearn环境下所有数据'''datasets.clear_data_home()'''载入波士顿房价数据'''X,y= datasets.load_boston(return_X_y=True)'''获取自变量数据的形状'''

print(X.shape)'''获取因变量数据的形状'''

print(y.shape)

自变量X:

因变量y:

1.2 威斯康辛州乳腺癌数据(适用于分类问题)

这个数据集包含了威斯康辛州记录的569个病人的乳腺癌恶性/良性(1/0)类别型数据(训练目标),以及与之对应的30个维度的生理指标数据;因此这是个非常标准的二类判别数据集,在这里使用load_breast_cancer(return_X_y)来导出数据:

from sklearn importdatasets'''载入威斯康辛州乳腺癌数据'''X,y= datasets.load_breast_cancer(return_X_y=True)'''获取自变量数据的形状'''

print(X.shape)'''获取因变量数据的形状'''

print(y.shape)

自变量X:

因变量y:

1.3 糖尿病数据(适用于回归任务)

这是一个糖尿病的数据集,主要包括442行数据,10个属性值,分别是:Age(年龄)、性别(Sex)、Body mass index(体质指数)、Average Blood Pressure(平均血压)、S1~S6一年后疾病级数指标。Target为一年后患疾病的定量指标,因此适合与回归任务;这里使用load_diabetes(return_X_y)来导出数据:

from sklearn importdatasets'''载入糖尿病数据'''X,y= datasets.load_diabetes(return_X_y=True)'''获取自变量数据的形状'''

print(X.shape)'''获取因变量数据的形状'''

print(y.shape)

自变量X:

因变量y:

1.4 手写数字数据集(适用于分类任务)

这个数据集是结构化数据的经典数据,共有1797个样本,每个样本有64的元素,对应到一个8x8像素点组成的矩阵,每一个值是其灰度值,我们都知道图片在计算机的底层实际是矩阵,每个位置对应一个像素点,有二值图,灰度图,1600万色图等类型,在这个样本中对应的是灰度图,控制每一个像素的黑白浓淡,所以每个样本还原到矩阵后代表一个手写体数字,这与我们之前接触的数据有很大区别;在这里我们使用load_digits(return_X_y)来导出数据:

from sklearn importdatasets'''载入手写数字数据'''data,target= datasets.load_digits(return_X_y=True)print(data.shape)print(target.shape)

这里我们利用matshow()来绘制这种矩阵形式的数据示意图:

importmatplotlib.pyplot as pltimportnumpy as np'''绘制数字0'''num= np.array(data[0]).reshape((8,8))

plt.matshow(num)print(target[0])'''绘制数字5'''num= np.array(data[15]).reshape((8,8))

plt.matshow(num)print(target[15])'''绘制数字9'''num= np.array(data[9]).reshape((8,8))

plt.matshow(num)print(target[9])

1.5 Fisher的鸢尾花数据(适用于分类问题)

著名的统计学家Fisher在研究判别分析问题时收集了关于鸢尾花的一些数据,这是个非常经典的数据集,datasets中自然也带有这个数据集;这个数据集包含了150个鸢尾花样本,对应3种鸢尾花,各50个样本(target),以及它们各自对应的4种关于花外形的数据(自变量);这里我们使用load_iris(return_X_y)来导出数据:

from sklearn importdatasets'''载入Fisher的鸢尾花数据'''data,target= datasets.load_iris(return_X_y=True)'''显示自变量的形状'''

print(data.shape)'''显示训练目标的形状'''

print(target.shape)

自变量:

训练目标:

1.6 红酒数据(适用于分类问题)

这是一个共178个样本,代表了红酒的三个档次(分别有59,71,48个样本),以及与之对应的13维的属性数据,非常适合用来练习各种分类算法;在这里我们使用load_wine(return_X_y)来导出数据:

from sklearn importdatasets'''载入wine数据'''data,target= datasets.load_wine(return_X_y=True)'''显示自变量的形状'''

print(data.shape)'''显示训练目标的形状'''

print(target.shape)

2 自定义数据集

前面我们介绍了几种datasets自带的经典数据集,但有些时候我们需要自定义生成服从某些分布或者某些形状的数据集,而datasets中就提供了这样的一些方法:

2.1 产生服从正态分布的聚类用数据

datasets.make_blobs(n_samples=100, n_features=2, centers=3, cluster_std=1.0, center_box=(-10.0, 10.0), shuffle=True, random_state=None),其中:

n_samples:控制随机样本点的个数

n_features:控制产生样本点的维度(对应n维正态分布)

centers:控制产生的聚类簇的个数

from sklearn importdatasetsimportmatplotlib.pyplot as plt

X,y= datasets.make_blobs(n_samples=1000, n_features=2, centers=4, cluster_std=1.0, center_box=(-10.0, 10.0), shuffle=True, random_state=None)

plt.scatter(X[:,0],X[:,1],c=y,s=8)

2.2 产生同心圆样本点

datasets.make_circles(n_samples=100, shuffle=True, noise=0.04, random_state=None, factor=0.8)

n_samples:控制样本点总数

noise:控制属于同一个圈的样本点附加的漂移程度

factor:控制内外圈的接近程度,越大越接近,上限为1

from sklearn importdatasetsimportmatplotlib.pyplot as plt

X,y= datasets.make_circles(n_samples=10000, shuffle=True, noise=0.04, random_state=None, factor=0.8)

plt.scatter(X[:,0],X[:,1],c=y,s=8)

2.3 生成模拟分类数据集

datasets.make_classification(n_samples=100, n_features=20, n_informative=2, n_redundant=2, n_repeated=0, n_classes=2, n_clusters_per_class=2, weights=None, flip_y=0.01, class_sep=1.0, hypercube=True, shift=0.0, scale=1.0, shuffle=True, random_state=None)

n_samples:控制生成的样本点的个数

n_features:控制与类别有关的自变量的维数

n_classes:控制生成的分类数据类别的数量

from sklearn importdatasets

X,y= datasets.make_classification(n_samples=100, n_features=20, n_informative=2, n_redundant=2, n_repeated=0, n_classes=2, n_clusters_per_class=2, weights=None, flip_y=0.01, class_sep=1.0, hypercube=True, shift=0.0, scale=1.0, shuffle=True, random_state=None)print(X.shape)print(y.shape)

set(y)

2.4 生成太极型非凸集样本点

datasets.make_moons(n_samples,shuffle,noise,random_state)

from sklearn importdatasetsimportmatplotlib.pyplot as plt

X,y= datasets.make_moons(n_samples=1000, shuffle=True, noise=0.05, random_state=None)

plt.scatter(X[:,0],X[:,1],c=y,s=8)

以上就是sklearn.datasets中基本的数据集方法,如有笔误之处望指出。

太极计算机ehr系统,(数据科学学习手札21)sklearn.datasets常用功能详解相关推荐

  1. (数据科学学习手札61)xpath进阶用法

    一.简介 xpath作为对网页.对xml文件进行定位的工具,速度快,语法简洁明了,在网络爬虫解析内容的过程中起到很大的作用,除了xpath的基础用法之外(可参考我之前写的(数据科学学习手札50)基于P ...

  2. (数据科学学习手札32)Python中re模块的详细介绍

    一.简介 关于正则表达式,我在前一篇(数据科学学习手札31)中已经做了详细介绍,本篇将对Python中自带模块re的常用功能进行总结: re作为Python中专为正则表达式相关功能做出支持的模块,提供 ...

  3. (数据科学学习手札30)朴素贝叶斯分类器的原理详解Python与R实现

    一.简介 要介绍朴素贝叶斯(naive bayes)分类器,就不得不先介绍贝叶斯决策论的相关理论: 贝叶斯决策论(bayesian decision theory)是概率框架下实施决策的基本方法.对分 ...

  4. 数据科学必备Pandas、NumPy进行数据清洗方法详解

    作为征战多年数据科学领域的小伙伴都很清楚,获取和清理数据的初始步骤会占据工作的 80%,花费大量时间来清理数据集并归结为可以使用的形式. 因此如果是刚刚踏入这个领域或计划踏入这个领域,重要的是能够处理 ...

  5. (数据科学学习手札37)ggplot2基本绘图语法介绍

    一.简介 ggplot2是R语言中四大著名绘图框架之一,且因为其极高的参数设置自由度和图像的美学感,即使其绘图速度不是很快,但丝毫不影响其成为R中最受欢迎的绘图框架:ggplot2的作者是现任Rstu ...

  6. (数据科学学习手札03)Python与R在随机数生成上的异同

    随机数的使用是很多算法的关键步骤,例如蒙特卡洛法.遗传算法中的轮盘赌法的过程,因此对于任意一种语言,掌握其各类型随机数生成的方法至关重要,Python与R在随机数底层生成上都依靠梅森旋转(twiste ...

  7. (数据科学学习手札45)Scala基础知识

    一.简介 由于Spark主要是由Scala编写的,虽然Python和R也各自有对Spark的支撑包,但支持程度远不及Scala,所以要想更好的学习Spark,就必须熟练掌握Scala编程语言,Scal ...

  8. (数据科学学习手札05)Python与R数据读入存出方式的总结与比较

    在数据分析的过程中,外部数据的导入和数据的导出是非常关键的部分,而Python和R在这方面大同小异,且针对不同的包或模块,对应着不同的函数来完成这部分功能: Python 1.TXT文件 导入: 以某 ...

  9. (数据科学学习手札58)在R中处理有缺失值数据的高级方法

    一.简介 在实际工作中,遇到数据中带有缺失值是非常常见的现象,简单粗暴的做法如直接删除包含缺失值的记录.删除缺失值比例过大的变量.用0填充缺失值等,但这些做法会很大程度上影响原始数据的分布或者浪费来之 ...

最新文章

  1. Iterator(迭代器)接口 --对象循环遍历
  2. FPGA设计心得(10)关于行为仿真的一点观点
  3. ubantu 16.04 mysql_Ubuntu 16.04下安装MySQL
  4. 让安全威胁无所遁形,全方位掌握攻击“前世今生”的黑科技来了
  5. oracle 连接字符串备份
  6. 子网掩码,可变长子网掩码,ABC类IP网络地址详解
  7. java汇编指令_汇编指令test的用法
  8. Servlet 请求转发
  9. 急需“五彩连珠”小游戏的代码
  10. PHP幸运抽奖系统带后台源码
  11. mysql命令行备份数据库
  12. hive新功能 Cube, Rollup介绍
  13. ASP.NET DATETIME
  14. mac下面如何修改只读文件
  15. Debian10配置IP地址、DNS、主机名
  16. OKHTTP系列(九)---http请求头(header)作用
  17. 时空大数据解决方案-最新全套文件
  18. 【操作系统】第二章--进程的描述与控制--笔记与理解(2)
  19. 使用苹果的地图与定位
  20. c#.net command 命令详细分析

热门文章

  1. Centos下lnmp编译安装详细过程
  2. pytorch 测试每一类_2D-UNet脑胶质瘤分割BraTs + Pytorch实现
  3. ER图转换成关系模式集的规则
  4. VBoxManage获取虚拟机IP地址
  5. 软件生成问候图片_这些社交软件你玩过几个?
  6. cesium 经纬度绘制点_NCL绘制2016年1号台风(Nepartak)
  7. 变位齿轮重合度计算公式_齿轮“模数”是如何计算的?
  8. 用计算机进行服装设计,电脑服装设计(10制版1班)
  9. webview跟html通信的原理,1.iOS: webView与html的交互
  10. [转载] JAVA泛型杂谈--擦除,协变,逆变,通配符等