sklearn.datasets常用功能详解

作为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 import datasets

'''清空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 import datasets

'''载入威斯康辛州乳腺癌数据'''

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 import datasets

'''载入糖尿病数据'''

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 import datasets

'''载入手写数字数据'''

data,target = datasets.load_digits(return_X_y=True)

print(data.shape)

print(target.shape)

 

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

import matplotlib.pyplot as plt
import numpy 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 import datasets

'''载入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 import datasets

'''载入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 import datasets
import matplotlib.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 import datasets
import matplotlib.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 import datasets

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 import datasets
import matplotlib.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中基本的数据集方法,如有笔误之处望指出。

  • 52
    点赞
  • 267
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: sklearn.datasets是Scikit-learn库中的一个模块,用于加载一些常用的数据集。这些数据集包括分类数据集、回归数据集、聚类数据集等等。这些数据集可以用于机器学习算法的训练和测试。 常见的数据集包括: 1. Iris数据集:鸢尾花数据集,包括3种不同类型鸢尾花的数据,每种鸢尾花有4个特征。 2. Boston房价数据集:包括波士顿市郊区房屋的14个特征以及对应的房价。 3. MNIST手写数字数据集:包括70000个28x28像素的手写数字图片。 4. Wine数据集:葡萄酒数据集,包括3种不同类型葡萄酒的数据,每种葡萄酒有13个特征。 等等。 通过sklearn.datasets加载这些数据集,可以方便地进行数据分析和机器学习模型的训练。 ### 回答2: sklearn.datasets 是机器学习库 scikit-learn 中的一个模块,用于加载常用的数据集。它提供了一些经典的数据集,供用户在机器学习实验中使用。 sklearn.datasets 中包含了许多常用的数据集,包括监督学习和无监督学习数据集。这些数据集分为两种类型:原始数据集和生成数据集。 原始数据集是已经提前准备好的真实数据集,可以直接通过 sklearn.datasets 模块进行加载。例如,可以使用 load_iris() 函数加载 Iris 数据集,该数据集包含 150 个样本,每个样本有 4 个特征。另一个例子是 load_digits() 函数,加载手写数字数据集,该数据集用于图像分类问题。 生成数据集是根据一定的规则或模型生成的合成数据集。这些数据集通常用于验证算法的性能和特征选择的有效性。例如,make_blobs() 函数可以生成一个聚类数据集,make_regression() 函数可以生成一个回归数据集。 在使用 sklearn.datasets 加载数据集后,我们可以通过各种属性和方法来访问数据集,例如 data、target、feature_names、target_names 等。通过这些属性和方法,我们可以访问数据集、拆分数据集、查看数据集的特征和标签等。 sklearn.datasets 模块为机器学习实验提供了方便快捷的数据集加载和使用方式。它已经在 scikit-learn 中得到广泛应用,可以帮助用户快速构建并测试机器学习模型。使用这些数据集时,我们需要了解数据集的特点和用途,选择合适的数据集来进行实验。 ### 回答3: sklearn.datasets是Scikit-learn机器学习库中的一个模块,用于加载和获取标准数据集。Scikit-learn是一个著名的Python机器学习库,提供了许多机器学习算法和工具。这个库被广泛应用于数据挖掘、数据分析和预测建模等领域。 sklearn.datasets的主要作用是提供了一些常用的标准数据集,供开发者在进行机器学习任务时使用。这些数据集可以帮助开发者快速地获取和加载数据,而无需自己从原始数据中提取和处理。这对于初学者或者快速原型验证的任务非常有帮助。 在sklearn.datasets中,有一些著名的数据集可供使用,比如鸢尾花数据集、手写数字数据集、波士顿房价数据集等等。这些数据集都是经过预处理和整理的,以便于机器学习算法的使用。开发者可以使用这些数据集来进行分类、回归或聚类等任务的训练和评估。 sklearn.datasets提供了简单且一致的API,以便于开发者使用。开发者只需要导入相应的数据集,然后调用相应的函数即可获取对应的数据。一般来说,每个数据集都会包含两个部分:特征矩阵X和目标向量y。特征矩阵包含了样本的各种特征,而目标向量则对应了样本的类别或回归目标。 总的来说,sklearn.datasets是Scikit-learn库中的一个重要组成部分,它提供了一些常用的标准数据集用于机器学习任务。这些数据集可以帮助开发者快速地获取和加载数据,从而加速机器学习算法的开发和研究。同时,开发者也可以根据自己的需求,自定义数据集,以适应更复杂的任务和数据要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值