sklearn.datasets中make_classification函数

make_classification 是 sklearn.datasets 模块中的一个函数,用于生成一个用于分类任务的虚拟数据集。它允许你生成具有指定特征、类别和噪声等属性的人工数据集,通常用于测试和演示机器学习算法。

语法

python 复制代码
from sklearn.datasets import make_classification

make_classification(n_samples=100, n_features=20, n_informative=2, n_redundant=2,
                     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 : 样本数量,默认值是 100。决定数据集中的样本数。
  • n_features : 特征数量,默认值是 20。生成的特征的总数。
  • n_informative : 有信息的特征数量,默认值是 2。这些特征对目标变量有实际影响。
  • n_redundant : 冗余特征的数量,默认值是 2。这些特征是从现有的有信息特征中线性组合而来,不提供额外的有用信息。
  • 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: 随机数生成器的种子,用于控制结果的可重复性。

返回值

返回一个元组 (X, y),其中:

  • X 是生成的特征矩阵,形状为 (n_samples, n_features)。
  • y 是目标变量的标签数组,形状为 (n_samples,)。

示例

1. 基本示例

生成一个包含 100 个样本、2 个特征、2 个类别的简单分类数据集:

python 复制代码
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=100, n_features=2, n_classes=2, random_state=42)

print(X.shape)  # 输出 (100, 2)
print(y.shape)  # 输出 (100,)
2. 更多控制

生成 1000 个样本,20 个特征,其中 5 个是有信息的,3 个是冗余的,类别之间有噪声:

python 复制代码
X, y = make_classification(n_samples=1000, n_features=20, n_informative=5, 
                            n_redundant=3, n_classes=3, flip_y=0.05, random_state=42)

print(X.shape)  # 输出 (1000, 20)
print(y.shape)  # 输出 (1000,)
3. 自定义类别分布

自定义类别的样本分布(例如,使类别 0 和类别 1 更为不平衡):

python 复制代码
X, y = make_classification(n_samples=1000, n_features=10, n_classes=2, 
                            weights=[0.9, 0.1], random_state=42)

print(y[:20])  # 输出样本标签,类别不平衡

应用场景

  • 测试和验证模型:生成用于分类任务的模拟数据,帮助评估不同分类算法的效果。
  • 教学和演示:用于机器学习教程和课堂教学,展示如何处理不同的分类问题。
  • 算法调试 :当你需要一个已知的、有控制特征的数据集来调试或调整机器学习模型时,make_classification 是一个很好的工具。

通过 make_classification,可以快速生成多样的人工数据集,以适应不同的机器学习实验。

相关推荐
专注仿真10 小时前
支持向量机(SVM)算法详解与代码实例
算法·机器学习·支持向量机
Highcharts.js10 小时前
Highcharts 集成到 React 或 Vue 项目中时,如何高效地使用 TypeScript技巧?
vue.js·人工智能·react.js·typescript·前端框架·highcharts
应用市场10 小时前
用本机跑的开源音乐模型,给安卓小游戏做 20 秒无缝循环背景音乐
android·python·游戏开发·soundpool·音频处理
小lo想吃棒棒糖10 小时前
把 启元机器人Q1 的训练搬到昇腾 910B:从 MuJoCo 到 PPO 的一次完整迁移
人工智能·python·机器人·昇腾·具身智能
收放扳机10 小时前
PCB自动化整机“末端执行器”与“机械手负载”的匹配选型
人工智能·科技·自动化·制造·pcb工艺
IT_陈寒10 小时前
JavaScript实战技巧总结:深挖数组遍历的性能陷阱与实战解法
前端·人工智能·后端
weixin_3077791310 小时前
RAG 级联失效分析——面试中的错误归因艺术
人工智能·python·面试·职场和发展
骑着蜗牛撵大象32710 小时前
闲鱼捡漏自动化:关键词加价格上限先粗筛,AI 大模型再做第一轮判定
大数据·人工智能·ai·自动化·二手交易·闲鱼·关键词监控
AI创界者10 小时前
Python 进阶实战(十八):API 网关安全与异步鉴权中间件 —— 基于 AsyncIO 的 JWT 零拷贝验权与动态黑名单过滤
人工智能·python·aigc
涛声依旧-底层原理研究所11 小时前
可控执行系统:企业 Agent 从演示到生产的架构重构
人工智能·架构