regression-analyzer
自动回归建模工具 —— 对表格数据执行线性回归(OLS)或逻辑回归(Logit),一键输出完整统计结果和中文通俗解读。
能力概览
| 功能 | 说明 |
|---|---|
| 线性回归 | OLS,输出系数、R²、调整 R²、F 检验、AIC/BIC、Durbin-Watson |
| 逻辑回归 | Logit,输出系数、Odds Ratio、Pseudo R²、似然比检验 |
| 多重共线性检测 | 每个自变量的 VIF 值 + 警告级别 |
| 通俗解读 | 用中文对每个指标和系数给出"什么意思/该怎么看"的说明 |
| 自动检测 | 目标变量为 0/1 时自动切换逻辑回归 |
Tooling
在 ZhiYuan/Pi 内必须通过 run_skill_script 执行本技能脚本,禁止用 bash 直跑 python3 或 python:
{
"skillId": "regression-insight",
"script": "scripts/regression_analyzer.py",
"args": ["<数据文件>", "--target", "<目标列>"]
}
args与下方"详细用法"的命令行参数一一对应(去掉python3 scripts/regression_analyzer.py前缀)。- 脚本依赖(pandas / numpy / scipy / statsmodels,见
requirements.txt)由应用管理的技能 Python 运行时保证,不需要也不应该手动pip install或寻找系统 Python。 - 若执行返回依赖缺失或运行时不可用错误,不要改用系统
python3或手写替代实现(例如用纯 Python 循环重算回归)——直接报告该错误,说明需要技能 Python 运行时提供依赖。
Quick Start
{
"skillId": "regression-insight",
"script": "scripts/regression_analyzer.py",
"args": ["data.csv", "--target", "price"]
}
完整命令示例(展示参数映射,实际执行一律经 run_skill_script):
# 线性回归:预测 price,用所有数值列做自变量
python3 scripts/regression_analyzer.py data.csv --target price
# 逻辑回归:预测 churn(0/1),指定特征列
python3 scripts/regression_analyzer.py users.csv --target churn --features "age,income,tenure"
# 保存结果到 JSON
python3 scripts/regression_analyzer.py data.csv --target sales --output result.json
详细用法
以下命令示例仅用于展示参数映射——实际执行一律通过 run_skill_script,将参数放入 args 数组(见上方 Tooling 段)。禁止在 bash 中直跑 python3 调用本脚本。
基本调用
python3 scripts/regression_analyzer.py <数据文件> --target <目标列> [选项]
指定回归类型
# 强制线性回归
python3 scripts/regression_analyzer.py data.csv -t y --type linear
# 强制逻辑回归
python3 scripts/regression_analyzer.py data.csv -t label --type logistic
# 自动检测(默认)
python3 scripts/regression_analyzer.py data.csv -t y --type auto
选择特征列
# 手动指定(逗号分隔)
python3 scripts/regression_analyzer.py data.csv -t price -f "sqft,bedrooms,bathrooms"
# 省略则自动使用所有数值列
python3 scripts/regression_analyzer.py data.csv -t price
参数说明
| 参数 | 缩写 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
input |
— | 是 | — | 输入文件路径(CSV/TSV/Excel/JSON) |
--target |
-t |
是 | — | 目标变量(因变量)列名 |
--features |
-f |
否 | 全部数值列 | 自变量列名,逗号分隔 |
--type |
-T |
否 | auto |
回归类型:linear / logistic / auto |
--output |
-o |
否 | 标准输出 | 结果 JSON 保存路径 |
--no-const |
— | 否 | false |
不添加截距项 |
--keep-na |
— | 否 | false |
保留缺失值行(调试用) |
输出结构(JSON)
{
"type": "linear",
"r_squared": 0.8523,
"r_squared_adj": 0.8471,
"f_statistic": 162.34,
"f_p_value": 0.0,
"coefficients": {
"sqft": {"coefficient": 135.42, "p_value": 0.0001, ...},
"bedrooms": {"coefficient": 8021.5, "p_value": 0.032, ...}
},
"vif": {"sqft": 2.31, "bedrooms": 1.87},
"interpretation": {
"模型概述": ["R² = 0.8523(模型拟合优良…)"],
"各变量解读": ["sqft:系数 = 135.42…正向影响…"]
}
}
依赖
运行时依赖(pandas、numpy、statsmodels、scipy)由应用管理的技能 Python 运行时按 requirements.txt 提供,无需也不应手动安装。仅在本地独立调试(不经过 ZhiYuan 运行时)时才需要:
pip install pandas numpy statsmodels scipy