sklearn库中有关于数据集的介绍
scikit-learn(sklearn
)库提供了多个内置数据集,涵盖分类、回归、聚类等任务。这些数据集常用于教学、算法测试和模型验证。以下是常用数据集及其简要介绍:
一.常见的数据集分类
1. 分类数据集
(1) 鸢尾花数据集(Iris)
加载函数:
load_iris()
样本数:150(3类 × 50个)
特征数:4(萼片长宽、花瓣长宽)
目标变量:3种鸢尾花类型(
setosa
,versicolor
,virginica
)用途:多分类任务入门。
from sklearn.datasets import load_iris
data = load_iris()
X, y = data.data, data.target
(2) 手写数字数据集(Digits)
加载函数:
load_digits()
样本数:1797
特征数:64(8×8像素图像,每像素0~16的灰度值)
目标变量:数字0~9
用途:图像分类入门。
from sklearn.datasets import load_digits
data = load_digits()
(3) 乳腺癌数据集(Breast Cancer)
加载函数:
load_breast_cancer()
样本数:569(良性357,恶性212)
特征数:30(半径、纹理等医学特征)
目标变量:
0
(恶性)或1
(良性)用途:二分类任务。
from sklearn.datasets import load_breast_cancer
data = load_breast_cancer()
2. 回归数据集
(1) 波士顿房价数据集(Boston Housing)
⚠️ 注意:由于伦理问题,该数据集在scikit-learn 1.2版本后被移除。替代方案:
fetch_california_housing()
。
加载函数:
fetch_california_housing()
(加利福尼亚房价)样本数:20640
特征数:8(收入中位数、房龄等)
目标变量:房屋价格中位数
from sklearn.datasets import fetch_california_housing
data = fetch_california_housing()
(2) 糖尿病数据集(Diabetes)
加载函数:
load_diabetes()
样本数:442
特征数:10(年龄、性别、BMI等)
目标变量:疾病进展指标(连续值)
from sklearn.datasets import load_diabetes
data = load_diabetes()
3. 聚类数据集
(1) 合成斑点数据集(Blobs)
生成函数:
make_blobs()
用途:自定义聚类数据(可控簇数量、标准差)。
from sklearn.datasets import make_blobs
X, y = make_blobs(n_samples=100, centers=3, random_state=42)
(2) 鸢尾花数据集
同样适用于聚类任务(如K-Means)。
4. 其他数据集
(1) 葡萄酒数据集(Wine)
加载函数:
load_wine()
样本数:178(3类)
特征数:13(酒精含量、颜色强度等)
目标变量:葡萄酒品类(3类)
from sklearn.datasets import load_wine
data = load_wine()
(2) 新闻分类数据集(20 Newsgroups)
加载函数:
fetch_20newsgroups()
样本数:约18,000篇新闻
特征:文本数据
目标变量:20个主题类别
from sklearn.datasets import fetch_20newsgroups
data = fetch_20newsgroups(subset='train') # subset='test'
二.常见的数据集的操作
查看数据集描述
print(data.DESCR) # 打印详细描述(特征含义、来源等)
数据集结构
print("特征形状:", data.data.shape)
print("标签形状:", data.target.shape)
print("特征名:", data.feature_names)
print("标签名:", data.target_names)
完整示例(加载并探索Iris数据集)
from sklearn.datasets import load_iris# 加载数据
iris = load_iris()# 查看关键信息
print("特征矩阵形状:", iris.data.shape) # (150, 4)
print("标签形状:", iris.target.shape) # (150,)
print("特征名:", iris.feature_names) # ['sepal length (cm)', ...]
print("类别名:", iris.target_names) # ['setosa', 'versicolor', 'virginica']# 打印详细描述
print(iris.DESCR) # 包含数据来源、统计信息等
通过sklearn.datasets模块,你可以快速获取高质量数据集,无需额外下载,非常适合算法原型开发和实验。
三.sklearn数据集返回值介绍
在 scikit-learn(sklearn)中,加载内置数据集(如 load_iris, load_digits, fetch_california_housing 等)通常返回一个 Bunch 对象。这不是标准的 Python 字典,而是一个类似字典的对象,允许通过点号.或键[]访问其属性。
核心返回值(Bunch对象的属性):
1.data (最重要的特征数据):
类型: 通常是 numpy.ndarray(二维数组)。
内容: 包含数据集的所有样本的特征向量(自变量)。
形状: (n_samples, n_features)。
示例: X = iris.data 获取鸢尾花的特征(萼片长宽、花瓣长宽)。
2.target (目标变量/标签):
类型: 通常是 numpy.ndarray(一维或二维数组)
内容:
分类任务: 样本对应的类别标签(整数或字符串编码)。
回归任务: 样本对应的连续目标值。
形状: (n_samples,) 或 (n_samples, n_targets)(多输出问题)。
示例: y = iris.target 获取鸢尾花的品种标签(0, 1, 2)。
3.feature_names (特征名称):
类型: list of str。
内容: data 数组中每一列(特征)的名称。对于图像数据集(如 load_digits),此属性通常为 None。
示例: iris.feature_names 返回 ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']。
4.target_names (目标名称 - 主要分类):
类型: list of str 或 numpy.ndarray of str。
内容: target 数组中每个唯一标签对应的实际类别名称。对于纯回归数据集(如 fetch_california_housing),此属性通常为 None。
示例: iris.target_names 返回 ['setosa', 'versicolor', 'virginica']。
5.DESCR (数据集描述):
类型: str。
内容: 关于数据集的完整描述文本。通常包含来源、属性解释、统计信息、引用信息等。非常有用!
示例: print(iris.DESCR) 会打印出鸢尾花数据集的详细文档。
6. filename (文件路径 - 某些数据集):
类型: str。
内容: 本地缓存数据文件的完整路径。对于像 load_iris 这种极小的内置在库中的数据,此属性可能不存在或为 None。对于 fetch_* 类需要下载的数据集(如fetch_california_housing),此属性指向下载后存储的数据文件。
示例: cal_housing.filename 可能返回类似 '/Users/.../scikit_learn_data/.../cal_housing.tgz' 的路径。