Scikit-learn 中文教程

第二部分:Scikit-learn 核心基础
第 3 章 Scikit-learn 核心设计与 API 体系
第 4 章 数据集模块与数据划分
第三部分:数据预处理与特征工程
第 5 章 数据预处理核心模块(sklearn.preprocessing)
第 6 章 特征工程:提取、选择与构建
第四部分:模型评估与验证
第 7 章 模型评估指标(按任务类型划分)
第 8 章 模型验证与超参数调优
第五部分:Scikit-learn 核心算法模块
第 9 章 有监督学习:分类算法
第 10 章 有监督学习:回归算法
第 11 章 无监督学习:聚类与密度算法
第 12 章 半监督学习与其他常用算法
第八部分:性能优化与问题解决
第 18 章 Scikit-learn 性能优化
第 19 章 Scikit-learn 常见问题与解决方案

4.1 Scikit-learn 内置数据集

Scikit-learn内置数据集:加载方法、经典数据集及结构解析指南

Scikit-learn 中文教程

本文详细讲解Scikit-learn内置数据集的加载方法,包括鸢尾花、波士顿房价、手写数字、乳腺癌数据等经典小数据集,以及如何解析数据集的data、feature_names、target、target_names和DESCR结构,适合机器学习新手学习。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

Scikit-learn内置数据集入门指南

1. 简介

Scikit-learn(简称sklearn)是Python中一个强大的机器学习库,它内置了多个经典的小型数据集。这些数据集非常适合新手入门,无需从外部文件加载,可以直接用于学习和实验。本章将介绍如何加载这些数据集,并解析它们的基本结构。

2. 经典小数据集介绍

Scikit-learn提供了多个内置数据集,以下是四个最常用的经典数据集:

  • 鸢尾花数据集(Iris):用于分类问题,包含150个样本,每个样本有4个特征(如花萼和花瓣的长度、宽度),目标分为3个类别(山鸢尾、变色鸢尾、维吉尼亚鸢尾)。这是最常用的入门数据集之一。
  • 波士顿房价数据集(Boston Housing):用于回归问题,包含506个样本,有13个特征(如犯罪率、房间数等),目标是预测房屋价格。但请注意:从Scikit-learn 1.2版本开始,由于伦理问题,这个数据集被移除了,旧版本仍可使用,新手建议使用其他数据集替代。
  • 手写数字数据集(Digits):用于多分类问题,包含1797个手写数字图像样本,每个图像为8x8像素(64个特征),目标是识别0到9的数字。
  • 乳腺癌数据集(Breast Cancer):用于二分类问题,包含569个样本,有30个特征(如肿瘤特性),目标是预测肿瘤为良性或恶性。

这些数据集覆盖了分类、回归和图像识别等常见机器学习任务,非常适合练习。

3. 数据集加载方法

Scikit-learn提供了方便的load_*()函数来加载这些数据集。您只需从sklearn.datasets模块导入相应函数即可。以下是加载示例:

from sklearn import datasets

# 加载鸢尾花数据集
iris = datasets.load_iris()

# 加载波士顿房价数据集(旧版本可用,新版本已移除)
# boston = datasets.load_boston()  # 注意:在Scikit-learn 1.2+中可能引发警告或错误

# 加载手写数字数据集
digits = datasets.load_digits()

# 加载乳腺癌数据集
cancer = datasets.load_breast_cancer()

注意:对于波士顿房价数据集,由于伦理问题(数据集包含潜在偏见),Scikit-learn 1.2版本后已将其移除。如果您使用新版本,可以忽略这部分或从其他来源(如Kaggle)获取类似数据。新手建议先专注于其他数据集。

4. 数据集结构解析

加载后的数据集是一个类似字典的Bunch对象,包含以下几个关键部分,新手可以轻松理解和访问:

  • data:这是一个NumPy数组,存储特征数据。形状通常是(n_samples, n_features),其中n_samples是样本数,n_features是特征数。例如,鸢尾花数据集的data是一个150x4的矩阵。
  • feature_names:这是一个列表,包含每个特征的名称。这有助于理解数据含义。例如,鸢尾花数据集的feature_names是['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']。
  • target:这是一个NumPy数组,存储目标变量(即标签)。对于分类问题,它是类别索引;对于回归问题,它是连续值。例如,鸢尾花数据集的target是一个包含0、1、2的数组,对应3个类别。
  • target_names:这是一个列表,包含目标类别的名称(仅适用于分类问题)。例如,鸢尾花数据集的target_names是['setosa', 'versicolor', 'virginica']。
  • DESCR:这是一个字符串,提供数据集的详细描述,包括来源、特征解释等。打印出来可以了解数据集背景。

示例代码:访问数据集结构

以下是一个简单示例,展示如何加载和检查数据集结构:

from sklearn import datasets

# 加载鸢尾花数据集
iris = datasets.load_iris()

# 查看数据集的各个部分
print("数据集形状:", iris.data.shape)  # 输出: (150, 4)
print("特征名称:", iris.feature_names)  # 输出: ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
print("目标数组前几个值:", iris.target[:5])  # 输出类似: [0 0 0 0 0]
print("目标类别名称:", iris.target_names)  # 输出: ['setosa' 'versicolor' 'virginica']
print("数据集描述(前几行):")
print(iris.DESCR[:500])  # 打印DESCR的前500个字符以查看描述

运行此代码,您将直观地看到数据是如何组织的。例如,对于鸢尾花数据集,data的第一行可能对应一朵花的花萼和花瓣测量值,target的第一行是0,表示它属于'setosa'类别。

5. 总结

通过本章,您学会了如何加载Scikit-learn的内置数据集,并解析其基本结构。这些数据集是机器学习的理想起点,因为它们已经预处理过,且结构清晰。记住:

  • 使用load_*()函数轻松加载数据。
  • 熟悉datafeature_namestargettarget_namesDESCR这五个关键部分,它们将帮助您快速理解和使用数据。
  • 对于波士顿房价数据集,注意版本兼容问题,新手可以先用其他数据集练习。

在后续章节中,我们将学习如何用这些数据训练简单的机器学习模型。继续前进,享受学习之旅!

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包