文章目录
一、sklearn.datasets数据集
sklearn.datasets
中包含了多种多样的数据集,这些数据集主要可以分为以下几大类:
-
玩具数据集(Toy datasets):
- 波士顿房价(Boston Housing)数据集:包含了506个波士顿地区的房屋数据,每个数据点有13个特征变量和一个目标变量(房屋价格的中位数)。
- 鸢尾花(Iris)数据集:这是一个常用的分类数据集,包含了3种不同的鸢尾花及其4个特征。
- 糖尿病(Diabetes)数据集:关于糖尿病患者的一些生理指标与一年后的疾病进展指数之间的关系。
- 手写数字(Digits)数据集:包含了1797个手写数字的图像数据。
- 还有其他一些小型标准数据集,如乳腺癌(Breast Cancer)数据集等。
-
真实世界中的数据集(Real-world datasets):
这些数据集通常需要通过fetch_
函数从网络上下载,它们是近年来真实收集的数据,适用于更复杂的机器学习任务。例如,新闻组(20 Newsgroups)数据集,这是一个用于文本分类的大型数据集。 -
样本生成器(Sample generators):
sklearn.datasets
还提供了一系列函数来生成人工数据集,如make_classification
、make_regression
等。这些函数可以根据用户指定的参数生成用于分类、回归等任务的数据集。 -
样本图片(Sample images):
sklearn.datasets
也包含了一些用于图像处理和计算机视觉任务的数据集,如Olivetti人脸识别数据集等。 -
SVMLight或LibSVM格式的数据:
可以加载SVMLight或LibSVM格式的数据集,这些格式常用于机器学习竞赛和研究中。 -
从OpenML下载的数据:
OpenML是一个用于机器学习数据和实验的公共存储库。通过sklearn.datasets.fetch_openml()
函数,可以从OpenML下载各种数据集。
需要注意的是,sklearn.datasets
中的数据集主要是为了方便教学和入门学习而提供的。在实际应用中,可能需要使用更大规模、更复杂的数据集来训练模型。此外,随着时间的推移,sklearn
库可能会更新和添加新的数据集,因此建议查阅最新的官方文档以获取最准确的信息。
二、sklearn.datasets常用函数
sklearn.datasets
模块提供了多个函数来加载和生成数据集。以下是一些sklearn.datasets
中常用的函数:
1. 加载数据集
load_iris()
: 加载鸢尾花数据集,这是一个常用的多类分类数据集。load_digits()
: 加载手写数字数据集,每个实例都是一张8x8的数字图像及其对应的数字类别。load_boston()
: 加载波士顿房价数据集,这是一个回归问题的数据集。load_breast_cancer()
: 加载乳腺癌数据集,这是一个二分类问题的数据集。load_diabetes()
: 加载糖尿病数据集,这个数据集可以用于回归分析。fetch_20newsgroups(subset='train')
: 下载和加载20个新闻组文本数据集的一个子集,用于文本分类或聚类。fetch_openml(name='mnist_784', ...)
: 从OpenML获取数据集,例如著名的MNIST手写数字数据集。
2. 生成数据集
make_blobs(n_samples=100, ...)
: 生成用于聚类的随机数据。make_classification(n_samples=100, ...)
: 生成一个随机的二分类问题。make_regression(n_samples=100, ...)
: 生成一个随机的回归问题。make_moons(n_samples=100, ...)
: 生成两个交错的月牙形状的数据集,用于分类。make_circles(n_samples=100, ...)
: 生成两个环形的数据集,一个内环,一个外环,也用于分类。make_s_curve(n_samples=100, ...)
: 生成S形曲线数据集,这是一个非线性可分的数据集。
3. 图像数据集
fetch_olivetti_faces()
: 下载Olivetti人脸数据集,通常用于人脸识别或图像处理。fetch_lfw_people(min_faces_per_person=70, ...)
: 下载Labeled Faces in the Wild (LFW) 人脸数据集的一个子集。fetch_lfw_pairs(subset='train', ...)
: 下载LFW人脸数据集中的成对面部图像,用于验证面部识别算法。
这些函数提供了方便的方式来获取或生成数据,以便在机器学习项目中进行测试和验证。每个函数都有许多参数可以调整,以便根据需要生成或加载特定类型的数据集。在使用这些函数时,请务必查阅官方文档以了解所有可用的参数和选项。
三、各数据集的作用
1、合成数据集
-
make_blobs:
- 作用:生成随机的数据集聚类,通常用于测试聚类算法。
- 特点:可以通过调整参数来控制数据点的数量、中心点的数量、标准差等,从而生成具有不同特性的聚类数据。
-
make_classification:
- 作用:生成一个随机的二分类问题,用于测试分类算法。
- 特点:可以指定样本数量、特征数量、类别分隔的难易程度等参数,以模拟不同复杂度的分类问题。
-
make_regression:
- 作用:生成一个随机的回归问题,用于测试回归算法。
- 特点:可以设定输入特征的数量、噪声水平等,以生成具有不同特性的回归数据。
-
make_moons:
- 作用:生成两个交错的半圆形数据,通常用于测试分类算法的性能,特别是在处理非线性可分数据时的表现。
- 特点:可以通过调整噪声水平、两个半圆的间距等参数来增加分类问题的难度。
-
make_circles:
- 作用:生成两个环形的数据集,一个在内环,一个在外环,也常用于测试分类算法处理非线性数据的能力。
- 特点:与
make_moons
类似,这也是一个用于测试非线性分类问题的数据集生成器。
2、真实数据集
-
load_iris:
- 作用:提供鸢尾花数据集,这是一个经典的机器学习数据集,包含三种不同类型的鸢尾花(山鸢尾、变色鸢尾、维吉尼亚鸢尾)及其四个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度)。
- 应用场景:常用于多类分类问题的实验和演示。
-
load_digits:
- 作用:提供手写数字(0-9)的数据集,每个样本都是8x8的图像。这是一个用于图像识别和机器学习入门的数据集。
- 应用场景:常用于图像分类、特征提取等任务的实验和演示。
-
load_boston:
- 作用:提供波士顿房价数据集,包含波士顿郊区房屋的中位数价格以及各项与房价相关的特征(如犯罪率、住宅平均房间数、是否靠近查尔斯河等)。
- 应用场景:主要用于回归问题的实验和演示,特别是房价预测等经济分析领域。
-
load_breast_cancer:
- 作用:提供乳腺癌数据集,包含良性和恶性两种类别的乳腺肿块样本及其相关特征(如肿块半径、纹理、周长等)。
- 应用场景:常用于医学领域的分类问题实验和演示,特别是癌症检测和诊断。
-
fetch_20newsgroups:
- 作用:提供一个文本分类的数据集,包含来自20个不同新闻组的文档(如计算机、科学、政治、体育等主题)。这是一个用于自然语言处理和文本分类任务的数据集。
- 应用场景:常用于文本挖掘、主题建模、情感分析等领域的实验和演示。
四、数据集使用代码示例
以下是sklearn.datasets
中几个数据集的示例使用代码:
- 加载鸢尾花(Iris)数据集
from sklearn.datasets import load_iris
iris = load_iris()
X, y = iris.data, iris.target
print(f"特征数量: {
X.shape[1]}")
print(f"类别数量: {
len(set(y))}")
- 加载手写数字(Digits)数据集
from sklearn.datasets import load_digits
digits = load_digits()
X, y = digits.data, digits.target
print(f"图像数量: {
len(X)}")
print(f"每张图像的特征数量: {
X[0].shape[0]}