当前位置: 首页 > ds >正文

Patsy的dmatrix() 函数

​详细解释与用法:from patsy import dmatrix

1. Patsy 库简介

Patsy 是一个 Python 库,主要用于统计建模中的数据预处理,特别是在回归分析、方差分析(ANOVA)等统计模型中。它的核心功能是将公式字符串(如 y ~ x1 + x2)转换为数值矩阵,以便机器学习或统计模型(如 statsmodelsscikit-learn)可以直接使用。


2. dmatrix() 函数的作用

dmatrix() 是 Patsy 的核心函数,用于根据给定的公式字符串创建设计矩阵(design matrix)​。它可以:

  • 自动处理分类变量​(如 fruit 列中的 "apple""pear" 等,转换为数值型)
  • 支持变量转换​(如标准化 standardize()、中心化 center()
  • 创建交互项、多项式项​(如 x1:x2x1**2

3. 题目解析

题目要求:

  • storage 列进行标准化(standardize)​​:
    • 标准化 = (x - 均值) / 标准差,使数据均值为 0,标准差为 1。
  • amount 列进行中心化(center)​​:
    • 中心化 = (x - 均值),使数据均值为 0,但保持原始尺度。

参考:

中心化(Centering)、标准化(Standardization)-CSDN博客

Min-Max标准化​ 和 ​Z-score标准化-CSDN博客

给定的数据表 fruits:​

fruitstorageamount
0apple86
1pear55
2orange103
3banana62

4. 代码解析​​

import patsy
design_matrix = patsy.dmatrix('standardize(storage) + center(amount)', df)
  • ​第一个参数 'standardize(storage) + center(amount)'
    • standardize(storage):对 storage 列进行标准化。
    • center(amount):对 amount 列进行中心化。
    • + 表示将两列合并为一个设计矩阵。
  • ​第二个参数 fruits
    • 传入的数据表(Pandas DataFrame 或类似结构)。

5. 执行结果(示例)​

假设 fruits 是一个 Pandas DataFrame,运行上述代码后,dmatrix() 会返回一个设计矩阵,类似:

计算过程:​

  1. standardize(storage)
    • 均值 = (8 + 5 + 10 + 6) / 4 = 7.25
    • 标准差 ≈ 1.92
    • 标准化后的 storage
      • (8 - 7.25) / 1.92 ≈ 0.2182
      • (5 - 7.25) / 1.92 ≈ -1.0911
      • (10 - 7.25) / 1.92 ≈ 1.5276
      • (6 - 7.25) / 1.92 ≈ -0.6547
  2. center(amount)
    • 均值 = (6 + 5 + 3 + 2) / 4 = 4
    • 中心化后的 amount
      • 6 - 4 = 2
      • 5 - 4 = 1
      • 3 - 4 = -1
      • 2 - 4 = -2

6. 实际应用场景

dmatrix() 常用于:

  1. 回归分析​(如 statsmodelsOLS):
    import statsmodels.api as sm
    model = sm.OLS(y, dmatrix('x1 + x2', data)).fit()
  2. 机器学习特征工程​(如 scikit-learn 的预处理):
    X = dmatrix('standardize(age) + center(income)', customers)
  3. 方差分析(ANOVA)​​:
    dmatrix('C(group) + treatment', experiment_data)

http://www.xdnf.cn/news/17265.html

相关文章:

  • 利用m0改造循迹模块处理笔记00
  • 智慧酒店:科技赋能下的未来住宿新体验
  • 人工智能领域、图欧科技、IMYAI智能助手2025年7月更新月报
  • RabbitMQ延时队列的两种实现方式
  • NLP自然语言处理 03 Transformer架构
  • 数据集相关类代码回顾理解 | sns.distplot\%matplotlib inline\sns.scatterplot
  • 翻译的本质:人工翻译vs机器翻译的核心差异与互补性
  • 自然语言处理×第三卷:文本数据分析——她不再只是贴着你听,而开始学会分析你语言的结构
  • 最长连续序列(每天刷力扣hot100系列)
  • FANCU发那科机器人双脉冲焊接省气
  • 【STM32】HAL库中的实现(三):PWM(脉冲宽度调制)
  • 信用机制的发展与货币演进
  • 机器学习算法系列专栏:决策树算法(初学者)
  • golang的切片
  • 电子秤利用Websocket做为Client向MES系统推送数据
  • python的教务管理系统
  • 利用链上数据进行数字资产量化因子发现
  • 【Day 16】Linux-性能查看
  • Linux内核C语言代码规范
  • LangGraph学习笔记 — LangGraph中State状态模式
  • 数据安全治理——解读数据安全治理与评估服务业务介绍【附全文阅读】
  • oelove奥壹新版v11.7旗舰版婚恋系统微信原生小程序源码上架容易遇到的几个坑,避免遗漏参数白屏显示等问题
  • 相机拍摄的DNG格式照片日期如何修改?你可以用这款工具修改
  • vue3 子组件和子组件的通讯 mitt
  • 分布式选举算法:Bully、Raft、ZAB
  • 私有云盘新体验:FileRise在cpolar的加持下如何让数据管理更自由?
  • golang实现支持100万个并发连接(例如,HTTP长连接或WebSocket连接)系统架构设计详解
  • 第13届蓝桥杯Scratch_选拔赛_真题2021年11月27日
  • Guava 与 Caffeine 本地缓存系统详解
  • 2048小游戏