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

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,但保持原始尺度。

给定的数据表 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.dtcms.com/a/315987.html

相关文章:

  • Docker概述
  • MySQL主从复制部署
  • leetcode700:二叉搜索树中的搜索(递归与迭代双解法)
  • 高可用微服务架构实战:Nacos集群+Nginx负载均衡,Spring Cloud无缝对接
  • qt窗口--01
  • 2025金九银十Java后端面试攻略
  • MoonBit 月兔 - 云和边缘计算 AI云原生编程语言及开发平台
  • 【51单片机 用定时器计时,按键控制LED灯亮(按键按下多少秒,亮几个LED灯,按键松开,LED保持)】2022-10-18
  • Linux驱动24 --- RkMedia 视频 API 使用
  • 基于 Spring Boot 的小区人脸识别与出入记录管理系统实现
  • Bean 标签有哪些属性
  • CPU内存管理:MMU SMMU
  • 【arXiv2025】计算机视觉|即插即用|LWGA:即插即用!LWGA模块,视觉性能炸裂!
  • 深圳AI大会前瞻:千企集结,“模驱具身”加速AI硬件革命
  • PAT 1039 Course List for Student
  • 注意点:Git 从安装到分支协作、冲突解决的完整步骤 ---待修改,没看这个步骤,需要重新整理步骤
  • Orange的运维学习日记--28.Linux逻辑卷详解
  • MATLAB实现的基于压缩感知的图像处理
  • 分布式选举算法:Bully、Raft、ZAB
  • Spring Boot与Redis连接池配置终极指南:从版本差异到生产实践
  • 【Mysql】业务视角下,SQL字段处理专题
  • VR眼动追踪技术帮助医生更快速确认大脑神经损伤与疾病
  • MySQL索引底层原理与性能优化实践
  • JavaScript性能优化实战:从核心指标分析
  • “命令行过长“?一键解决 IntelliJ IDEA 中 Java/Spring Boot 启动失败问题
  • 武汉火影数字:VR大空间在文旅产业的创新应用
  • 7、Redis队列Stream和单线程及多线程模型
  • 二手房翻新时怎样装修省钱?
  • STM32H7+FreeRTOS+LwIP移植EtherCAT开源主站SOEM
  • 【AI论文】iLRM:一种迭代式大型3D重建模型