PyCaret AutoML 技能指南 | PyCaret AutoML Skill Guide
本技能帮助用户使用 PyCaret 快速构建端到端的机器学习工作流。PyCaret 是一个开源的低代码机器学习库,可以将数百行代码简化为几行。
This skill helps users build end-to-end machine learning workflows using PyCaret, an open-source low-code ML library that simplifies hundreds of lines of code into just a few lines.
核心功能 | Core Capabilities
- - 自动化模型选择 - 自动比较多个模型并选择最佳模型
- 自动化超参数调优 - 使用 Optuna/Hyperopt 自动优化模型参数
- 自动化特征工程 - 自动进行数据预处理、特征转换和特征选择
- 模型集成 - 支持 Bagging、Boosting、Stacking、Blending
- 模型可解释性 - 支持 SHAP、Permutation Importance 等解释方法
- 模型部署就绪 - 生成可复现的生产级 Pipeline
- 统计推断增强 - 支持置信区间、假设检验、统计显著性分析
统计推断增强 | Statistical Enhancement (statsmodels)
当需要统计推断、假设检验、置信区间时,可以使用 statsmodels 补充 PyCaret:
线性回归模型
CODEBLOCK0
广义线性模型 (GLM)
CODEBLOCK1
假设检验
CODEBLOCK2
时间序列分析
CODEBLOCK3
统计诊断
CODEBLOCK4
混合效应模型 (随机效应)
CODEBLOCK5
PyCaret + statsmodels 组合使用
# 1. 用 PyCaret 快速建模和选择模型
from pycaret.classification import *
clf = setup(data, target='target')
best = compare_models()
tuned = tune_model(best)
# 2. 用 statsmodels 做统计推断
import statsmodels.api as sm
# 获取 PyCaret 模型的特征和预测
X_with_const = sm.add_constant(X_test)
sm_model = sm.Logit(y_test, X_with_const).fit(disp=0)
print(sm_model.summary()) # 系数显著性 P值
支持的机器学习任务 | Supported ML Tasks
| 模块 | Module | 任务类型 | Task Type | 参考文档 |
|---|
| pycaret.classification | Classification | 二分类、多分类 | Binary, Multi-class | classification.md |
| pycaret.regression |
Regression | 回归预测 | Regression |
regression.md |
| pycaret.clustering | Clustering | 无监督聚类 | Unsupervised Clustering |
clustering.md |
| pycaret.anomaly | Anomaly Detection | 异常检测 | Outlier Detection |
anomaly.md |
| pycaret.time
series | Time Series | 时间序列预测 | Time Series Forecasting | timeseries.md |
| pycaret.nlp | NLP | 文本分类、主题建模 | Text Classification, Topic Modeling |
nlp.md |
| pycaret.arules | Association Rules | 关联规则挖掘 | Market Basket Analysis |
association_rules.md |
快速开始 | Quick Start
1. 选择您的任务类型
根据您的机器学习任务,选择相应的模块:
- - 分类问题 → 使用 INLINECODE0
- 回归问题 → 使用 INLINECODE1
- 客户分群 → 使用 INLINECODE2
- 异常检测 → 使用 INLINECODE3
- 时间预测 → 使用 INLINECODE4
- 文本分析 → 使用 INLINECODE5
- 购物篮分析 → 使用 INLINECODE6
2. 标准 AutoML 工作流 | Standard AutoML Workflow
完整的 AutoML 工作流程包含以下步骤:
Step 1: 数据收集与加载 | Data Collection & Loading
CODEBLOCK7
Step 2: 数据理解与探索 | Data Understanding & EDA
CODEBLOCK8
Step 3: 数据预处理 | Data Preprocessing (setup 中自动完成)
CODEBLOCK9
Step 4: 特征工程 | Feature Engineering (setup 中自动完成)
CODEBLOCK10
Step 5: 模型选择 | Model Selection
CODEBLOCK11
Step 6: 模型训练 | Model Training
CODEBLOCK12
Step 7: 超参数调优 | Hyperparameter Tuning
CODEBLOCK13
Step 8: 模型评估 | Model Evaluation
CODEBLOCK14
Step 9: 模型解释 | Model Interpretation
CODEBLOCK15
Step 10: 模型集成 | Model Ensemble
CODEBLOCK16
Step 11: 最终模型训练与预测 | Final Model Training & Prediction
CODEBLOCK17
Step 12: 模型保存与部署 | Model Save & Deployment
# 保存模型(包含完整Pipeline)
save_model(final_model, 'my_model')
# 保存实验配置
save_experiment('my_experiment')
# 加载模型
loaded_model = load_model('my_model')
# 部署到云平台
deploy_model(
final_model,
platform='aws', # aws/gcp/azure
authentication={
'bucket': 'my-bucket'
}
)
# 创建Web应用
create_app(final_model, app_path='app.py')
# 创建REST API
create_api(final_model, api_name='predict', api_file='predict.py')
# 创建Docker
create_docker('my_model', docker_path='Dockerfile')
AutoML 完整流程示例 | Complete AutoML Pipeline Example
CODEBLOCK19
通用 API 参考 | Common API Reference
详细内容请参考 utilities.md
数据加载
CODEBLOCK20
配置管理
CODEBLOCK21
模型操作
CODEBLOCK22
详细文档索引 | Detailed Documentation Index
setup 参数、模型列表、评估指标、工作流 |
classification.md |
| Regression | setup 参数、回归模型、评估指标、工作流 |
regression.md |
| Time Series | 时间序列特有参数、预测、季节性 |
time_series.md |
| Clustering | 聚类算法、轮廓系数、分配标签 |
clustering.md |
| Anomaly | 异常检测算法、可视化 |
anomaly.md |
| NLP | 主题模型、文本处理、词云 |
nlp.md |
| Association Rules | 关联规则、支持度、置信度 |
association_rules.md |
| Utilities | 通用函数、部署、应用生成 |
utilities.md |
代码模板 | Code Templates
分类任务模板
CODEBLOCK23
回归任务模板
CODEBLOCK24
时间序列模板
CODEBLOCK25
最佳实践 | Best Practices
- 1. 数据预处理: 使用
normalize=True, remove_outliers=True 等参数 - 模型选择: 用
compare_models(turbo=True) 快速验证 - 超参数调优: 根据时间预算设置 INLINECODE10
- 模型集成: 复杂任务使用
ensemble_model 或 INLINECODE12 - 生产部署: 使用
finalize_model() 在全量数据上训练
PyCaret AutoML 技能指南
本技能帮助用户使用 PyCaret 快速构建端到端的机器学习工作流。PyCaret 是一个开源的低代码机器学习库,可以将数百行代码简化为几行。
核心功能
- - 自动化模型选择 - 自动比较多个模型并选择最佳模型
- 自动化超参数调优 - 使用 Optuna/Hyperopt 自动优化模型参数
- 自动化特征工程 - 自动进行数据预处理、特征转换和特征选择
- 模型集成 - 支持 Bagging、Boosting、Stacking、Blending
- 模型可解释性 - 支持 SHAP、Permutation Importance 等解释方法
- 模型部署就绪 - 生成可复现的生产级 Pipeline
- 统计推断增强 - 支持置信区间、假设检验、统计显著性分析
统计推断增强 (statsmodels)
当需要统计推断、假设检验、置信区间时,可以使用 statsmodels 补充 PyCaret:
线性回归模型
python
import statsmodels.api as sm
OLS 回归(带统计显著性)
X = sm.add_constant(X) # 添加截距
model = sm.OLS(y, X).fit()
print(model.summary()) # R², F检验, P值, 置信区间
广义线性模型 (GLM)
python
二项分布 GLM (Logistic 回归)
glm_model = sm.GLM(y, X, family=sm.families.Binomial()).fit()
泊松回归 (计数数据)
poisson_model = sm.GLM(y, X, family=sm.families.Poisson()).fit()
假设检验
python
from scipy import stats
t 检验
t
stat, pvalue = stats.ttest_ind(group1, group2)
卡方检验
chi2, p
value, dof, expected = stats.chi2contingency(contingency_table)
ANOVA
f
stat, pvalue = stats.f_oneway(*groups)
时间序列分析
python
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.tsa.statespace.sarimax import SARIMAX
ARIMA 模型
arima
model = ARIMA(traindata, order=(1,1,1)).fit()
forecast = arima_model.forecast(steps=12)
季节性 SARIMAX
sarimax
model = SARIMAX(data, order=(1,1,1), seasonalorder=(1,1,1,12)).fit()
统计诊断
python
残差自相关检验 (Durbin-Watson)
from statsmodels.stats.stattools import durbin_watson
dw = durbin_watson(model.resid)
异方差检验
from statsmodels.stats.diagnostic import het_breuschpagan
bp
test = hetbreuschpagan(model.resid, model.model.exog)
正态性检验
from scipy import stats
shapiro
stat, shapirop = stats.shapiro(model.resid)
混合效应模型 (随机效应)
python
混合线性模型 (Panel Data / 多层次数据)
from statsmodels.regression.mixed
linearmodel import MixedLM
mixed
model = MixedLM(y, X, groups=groupvar).fit()
PyCaret + statsmodels 组合使用
python
1. 用 PyCaret 快速建模和选择模型
from pycaret.classification import *
clf = setup(data, target=target)
best = compare_models()
tuned = tune_model(best)
2. 用 statsmodels 做统计推断
import statsmodels.api as sm
获取 PyCaret 模型的特征和预测
X
withconst = sm.add
constant(Xtest)
sm
model = sm.Logit(ytest, X
withconst).fit(disp=0)
print(sm_model.summary()) # 系数显著性 P值
支持的机器学习任务
回归预测 |
regression.md |
| pycaret.clustering | 无监督聚类 |
clustering.md |
| pycaret.anomaly | 异常检测 |
anomaly.md |
| pycaret.time
series | 时间序列预测 | timeseries.md |
| pycaret.nlp | 文本分类、主题建模 |
nlp.md |
| pycaret.arules | 关联规则挖掘 |
association_rules.md |
快速开始
1. 选择您的任务类型
根据您的机器学习任务,选择相应的模块:
- - 分类问题 → 使用 pycaret.classification
- 回归问题 → 使用 pycaret.regression
- 客户分群 → 使用 pycaret.clustering
- 异常检测 → 使用 pycaret.anomaly
- 时间预测 → 使用 pycaret.time_series
- 文本分析 → 使用 pycaret.nlp
- 购物篮分析 → 使用 pycaret.arules
2. 标准 AutoML 工作流
完整的 AutoML 工作流程包含以下步骤:
Step 1: 数据收集与加载
python
数据加载
import pandas as pd
train = pd.read_csv(train.csv)
test = pd.read_csv(test.csv)
或使用 PyCaret 内置数据集
from pycaret.classification import get_data
data = get
data(breastcancer)
Step 2: 数据理解与探索
python
基本信息
print(f数据形状: {data.shape})
print(f数据类型:\n{data.dtypes})
缺失值分析
missing = data.isnull().sum()
missing_pct = (missing / len(data) * 100).round(2)
print(f缺失值比例:\n{pd.concat([missing, missing_pct], axis=1)})
目标变量分布
data[target].value_counts()
数值特征统计
data.describe()
Step 3: 数据预处理 (setup 中自动完成)
python
初始化环境 - 数据预处理配置
clf = setup(
data,
target=target,
# ===== 缺失值处理 =====
numeric_imputation=mean, # 数值型: mean/median/mode/knn/iterative
categorical_imputation=mode, # 类别型: mode/constant
# ===== 异常值处理 =====
remove_outliers=True, # 移除异常值
outliers_method=iforest, # iforest/ee/lof
outliers_threshold=0.05, # 异常值比例
# ===== 类别不平衡处理 =====
fix_imbalance=True, # 处理类别不平衡
fiximbalancemethod=SMOTE, # SMOTE/ADASYN/RandomOverSampler
# ===== 数据类型指定 =====
numeric_features=[age, income, score],
categorical_features=[city, gender, occupation],
datefeatures=[Date, createdat],
session_id=42
)
Step 4: 特征工程 (setup 中自动完成)
python
clf = setup(
data,
target=target,
# ===== 特征缩放 =====
normalize=True, # 归一化
normalize_method=zscore, # zscore/minmax/maxabs/robust
# ===== 特征变换 =====
transformation=True, # 变换使数据更接近正态分布
transformation_method=yeo-johnson, # yeo-johnson/quantile
# ===== 特征选择 =====
feature_selection=True, # 特征选择
featureselectionmethod=classic, # classic/univariate/sequential
nfeaturesto_select=0.2, # 选择20%最重要特征
# ===== 降维 =====
pca=True, # PCA降维
pca_method=linear, # linear/kernel/incremental
pca_components=0.95, # 保留95%方差
# ===== 多重共线性处理 =====
remove_multicollinearity=True,
multicollinearity_threshold=0.9,
# ===== 特征编码 =====
ordinalfeatures={education: [highschool, bachelor, master, phd]},
highcardinalityfeatures=frequency, # 处理