You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Stepmix LCA分析结果保存为DataFrame或Excel文件?

解决StepMix潜在类别分析结果转DataFrame并保存为Excel的问题

StepMix的StepMix对象无法直接用pd.DataFrame()转换,得先从模型中提取具体结果组件,再转为DataFrame后保存。以下是具体操作步骤:

1. 提取核心结果组件

提取样本类别归属结果

获取每个样本的类别归属概率和最终分类标签:

import pandas as pd

# 提取每个样本的类别概率(每行对应1个样本,每列对应1个类别)
class_probs = pd.DataFrame(
    model.predict_proba(dataframe),
    columns=[f"Class_{i}_Prob" for i in range(model.n_components)]
)

# 提取每个样本的最终分类类别
class_assignments = pd.DataFrame(
    model.predict(dataframe),
    columns=["Assigned_Class"]
)

提取模型参数

根据你使用的潜在类别分析类型(分类型/连续型指标),提取对应参数:

  • 分类型指标(measurement="categorical"):
# 提取每个类别下各指标的条件概率
categorical_params = pd.DataFrame(
    model.get_params()["measurement"]["params"],
    index=[f"Class_{i}" for i in range(model.n_components)]
)
# 可选:给列名添加指标和选项标签,比如对应原始数据的指标和选项:
# categorical_params.columns = ["var1_opt1", "var1_opt2", "var2_opt1", "var2_opt2"]
  • 连续型指标(measurement="continuous"):
# 提取每个类别下各指标的均值
mean_params = pd.DataFrame(
    model.get_params()["measurement"]["means"],
    index=[f"Class_{i}" for i in range(model.n_components)],
    columns=dataframe.columns  # 用原始数据列名作为指标名
)

# 提取每个类别下各指标的方差
var_params = pd.DataFrame(
    model.get_params()["measurement"]["vars"],
    index=[f"Class_{i}" for i in range(model.n_components)],
    columns=dataframe.columns
)

提取类别先验概率

prior_probs = pd.DataFrame(
    model.get_params()["structural"]["prior"],
    index=[f"Class_{i}" for i in range(model.n_components)],
    columns=["Prior_Probability"]
)

2. 保存到Excel文件

用pd.ExcelWriter将不同结果保存到同一Excel的不同工作表:

with pd.ExcelWriter("LCA_results.xlsx") as writer:
    # 保存原始数据+样本分类结果+类别概率
    pd.concat([dataframe, class_assignments, class_probs], axis=1).to_excel(writer, sheet_name="Sample_Results", index=False)
    # 保存类别先验概率
    prior_probs.to_excel(writer, sheet_name="Prior_Probabilities")
    # 根据模型类型保存参数
    # 分类型模型参数
    # categorical_params.to_excel(writer, sheet_name="Conditional_Probs")
    # 连续型模型参数
    # mean_params.to_excel(writer, sheet_name="Class_Means")
    # var_params.to_excel(writer, sheet_name="Class_Variances")

额外提示

  • 若不确定模型测量类型,可通过model.get_params()["measurement"]["name"]查看,返回"categorical"或"continuous"。
  • 模型拟合指标(如BIC、AIC)可直接从model.bic_、model.aic_获取,转为DataFrame后单独保存即可。

内容的提问来源于stack exchange,提问作者CORals

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 21:05:03