def create_coefficient_csv_with_ratios(base_models, feature_cols, output_path, df, base_recipe_to_group, base_high_overlap
):"""生成包含系数、分组统计、共现组合和特征依赖的CSV新增参数:base_high_overlap: dict,键为base_id,值为包含'cooccurrence_combinations'和'feature_dependencies'的字典"""# 1. 配置与初始化n_decimal = 3clean_features = [f.replace('Δ', '') for f in feature_cols]data = {}# 提取全局特征min/maxfeature_min_max = {}for feat in clean_features:if feat in df.columns:feature_min_max[feat] = {'min': round(df[feat].min(), n_decimal),'max': round(df[feat].max(), n_decimal)}# 2. 计算每个base_id分组的特征min/maxbaseid_group_stats = {}for baseid in base_recipe_to_group.keys():group_recipes = base_recipe_to_group[baseid]all_group_recipes = [baseid] + group_recipesif 'recipeid' not in df.columns:raise ValueError("df必须包含'recipeid'列以匹配分组recipe")group_df = df[df['recipeid'].isin(all_group_recipes)]base_df = df[df['recipeid'].isin([baseid])]baseid_group_stats[baseid] = {}for feat in clean_features:if feat in group_df.columns and not group_df[feat].empty:baseid_group_stats[baseid][feat] = {'base': round(base_df[feat].values[0], n_decimal) if not base_df.empty else np.nan,'min': round(group_df[feat].min(), n_decimal),'max': round(group_df[feat].max(), n_decimal)}else:baseid_group_stats[baseid][feat] = {'base': np.nan, 'min': np.nan, 'max': np.nan}# 3. 提取所有需要的共现组合维度(2-5)# 收集所有base中出现过的组合维度,确保列完整性cooccurrence_dims = set()for baseid, overlap_data in base_high_overlap.items():if 'cooccurrence_combinations' in overlap_data:cooccurrence_dims.update(overlap_data['cooccurrence_combinations'].keys())# 按2-5排序并过滤无效维度cooccurrence_dims = sorted([d for d in cooccurrence_dims if 2 <= d <= 5])# 4. 提取模型数据(新增共现组合和特征依赖列)for baseid, model in base_models.items():# 获取当前base的overlap数据overlap_data = base_high_overlap.get(baseid, {})cooccurrence = overlap_data.get('cooccurrence_combinations', {})dependencies = overlap_data.get('feature_dependencies', {})# 基础系数数据coef = np.round(model.coef_.flatten(), n_decimal)coef[coef == -0.0] = 0.0coef_mean = np.round(model.coefs_mean.flatten(), n_decimal)coef_low = np.round(model.coefs_down.flatten(), n_decimal)coef_high = np.round(model.coefs_up.flatten(), n_decimal)base_data = {}# 4.1 添加共现组合列(放在base_id后,特征列前)for dim in cooccurrence_dims:# 格式:用分号分隔组合信息,每个组合包含特征对和出现率combinations = cooccurrence.get(dim, [])if combinations:base_data[f"cooccur_{dim}"] = "; ".join([f"{comb['feature_combination']}({comb['occurrence_rate']:.2f})"for comb in combinations])else:base_data[f"cooccur_{dim}"] = "" # 无数据则为空# 4.2 添加特征相关列(含特征依赖)group_stats = baseid_group_stats[baseid.split('#')[0]]for i, feat in enumerate(clean_features):# 原有coef列base_data[f"{feat}_coef"] = coef[i]# 新增:特征依赖列(插入到coef之后)dep_info = dependencies.get(feat, [])if dep_info:# 格式:用分号分隔伴随特征信息base_data[f"{feat}_accompanying"] = "; ".join([f"{d['accompanying_feature']}(count:{d['cooccurrence_count']}, avg:{d['avg_change']:.2f})"for d in dep_info])else:base_data[f"{feat}_accompanying"] = "" # 无数据则为空# 原有分组统计列base_data[f"{feat}_group_base"] = group_stats[feat]['base'] if not np.isnan(group_stats[feat]['base']) else ""base_data[f"{feat}_group_min"] = group_stats[feat]['min'] if not np.isnan(group_stats[feat]['min']) else ""base_data[f"{feat}_group_max"] = group_stats[feat]['max'] if not np.isnan(group_stats[feat]['max']) else ""# 原有均值及置信区间列base_data[f"{feat}_mean"] = coef_mean[i]base_data[f"{feat}_conf_low"] = coef_low[i]base_data[f"{feat}_conf_high"] = coef_high[i]data[baseid] = base_data# 5. 创建基础数据框coef_df = pd.DataFrame.from_dict(data, orient='index')coef_df.index.name = "base_id"# 6. 计算特征系数的零值比例(用于排序)feature_stats = {}for feat in clean_features:coef_col = f"{feat}_coef"if coef_col in coef_df.columns:zero_ratio = (coef_df[coef_col] == 0).mean().round(n_decimal)positive_ratio = (coef_df[coef_col] > 0).mean().round(n_decimal)negative_ratio = (coef_df[coef_col] < 0).mean().round(n_decimal)feature_stats[feat] = {'zero_ratio': zero_ratio,'positive_ratio': positive_ratio,'negative_ratio': negative_ratio,'non_zero_ratio': 1 - zero_ratio}sorted_features = sorted(clean_features, key=lambda x: feature_stats[x]['non_zero_ratio'], reverse=True)# 7. 调整列顺序# 7.1 先排共现组合列(cooccur_2, cooccur_3, ...)sorted_cols = [f"cooccur_{d}" for d in cooccurrence_dims]# 7.2 再排特征相关列(按sorted_features顺序)for feat in sorted_features:for suffix in ["coef", "accompanying", # 新增伴随变量列紧跟coef之后"group_base", "group_min", "group_max", "mean", "conf_low", "conf_high"]:col = f"{feat}_{suffix}"if col in coef_df.columns:sorted_cols.append(col)coef_df = coef_df.reindex(columns=sorted_cols)# 8. 构建统计行stats_row = {}for col in coef_df.columns:feat_parts = col.split('_')if feat_parts[0] == 'cooccur':# 共现组合列不计算统计值stats_row[col] = "N/A"else:feat = feat_parts[0]metric = '_'.join(feat_parts[1:])if metric == 'coef':stats_row[col] = (f"z:{feature_stats[feat]['zero_ratio']}, "f"p:{feature_stats[feat]['positive_ratio']}, "f"n:{feature_stats[feat]['negative_ratio']}")elif metric == 'accompanying':# 伴随变量列不计算统计值stats_row[col] = "N/A"elif metric in ['group_base', 'group_min', 'group_max']:non_empty_vals = coef_df[col].replace("", np.nan).dropna()stats_row[col] = np.round(non_empty_vals.astype(float).mean(), n_decimal) if not non_empty_vals.empty else "N/A"else:stats_row[col] = np.round(coef_df[col].replace("", np.nan).astype(float).mean(), n_decimal)coef_df.loc["stats_summary"] = stats_row# 9. 添加全局特征min/max行min_max_row = {}for col in coef_df.columns:feat_parts = col.split('_')if feat_parts[0] == 'cooccur':min_max_row[col] = ""else:feat = feat_parts[0]if feat in feature_min_max:min_max_row[col] = f"min:{feature_min_max[feat]['min']}, max:{feature_min_max[feat]['max']}"else:min_max_row[col] = ""coef_df.loc["original_min_max"] = min_max_row# 10. 写入CSVcoef_df.to_csv(output_path, encoding='gbk')return coef_dfcoef_df = create_coefficient_csv_with_ratios(base_models1, feature_cols, output_path, df,base_recipe_to_group, base_high_overlap # 新增的overlap数据参数)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/944014.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!相关文章
0256-CLAP-参数可选值
环境Time 2022-12-03
WSL-Ubuntu 22.04
CLAP 4.0.29前言
说明
参考:https://docs.rs/clap/latest/clap/index.html
目标
限制参数可以选择的值有哪些。
Cargo.toml
[package]
edition = "2021"
name = &quo…
2025年10月空气净化器产品推荐:全价位段性能榜横向对比
入秋后,北方陆续进入供暖倒计时,南方也迎来装修季叠加雾霾反复,不少家庭把“换一台真正管用的空气净化器”提上日程。京东商智数据显示,2025年9月空气净化器搜索量环比上升42%,其中“甲醛CADR≥700”“母婴认证”…
NEBS / GR-63-CORE
NEBS / GR-63-CORENEBSA report
https://cannontech.co.uk/wp-content/uploads/2019/06/Seismic-Cabinet-Download.pdfHOFFMAN-WPCS-Earthquake Environments-UKEN-2109.pdf
https://www.nvent.com/sites/default/fi…
【验证码逆向专栏】某 SDN 验证码逆向分析
声明
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
本文章未经许可禁…
高压电缆生产厂家口碑榜:基于技术实力、客户服务及市场反馈的专业评估
高压电缆作为电力传输的核心组件,其质量直接关系到电网安全、能效和长期稳定性。随着基础设施建设和新能源项目的快速发展,市场对高压电缆的需求持续增长,厂家之间的竞争也日益激烈。本文基于行业调研、客户反馈及产…
oracle long转日期 和日期转long时间戳
oracle long转日期 和日期转long时间戳SELECT
TO_DATE(1970-01-01 08:00:00, YYYY-MM-DD HH24:mi:ss) + (TO_NUMBER(1761015597082) / (24 * 60 * 60 * 1000)) AS converted_date
FROM dual;
--date转long示例
select…
国产DevSecOps工具崛起:安全与效率的双重革命
国产DevSecOps工具崛起:安全与效率的双重革命
在数字化转型浪潮席卷各行各业的今天,软件开发的安全性问题日益凸显。随着《网络安全法》《数据安全法》等法规的密集出台,中国企业正面临前所未有的安全合规压力。这一…
2025 年最新外墙涂料厂家推荐排行榜:聚焦优质产品与实力企业,助力建筑涂装高效选品
引言
当前建筑涂料市场中,外墙涂料作为建筑外观装饰与防护的核心材料,需求持续攀升,但行业乱象也让选购者倍感困扰。部分产品耐候性差、易褪色开裂,环保不达标含高甲醛与 VOC,且市场信息不对称,缺乏权威指引,导…
2025年10月长白山亲子酒店排名榜:亲测十家安心入住
长假将至,不少父母把“带娃看雪”提上日程,长白山因粉雪早至、空气纯净、动植物丰富,成为东北亲子游首选。飞猪《2025冰雪游趋势报告》显示,长白山区域亲子酒店预订量同比增47%,其中带“儿童俱乐部、自然教育”标…
解决windows下启动tomcat乱码问题
解决windows下启动tomcat乱码问题如上图所示
解决方法:
1.打开Tomcat安装目录下的bin/catalina.bat文件,找到set JAVA_OPTS=这一行,注释掉,添加下面的配置
set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=GBK -Dsun.j…
类组件(Classcomponent)和函数式组件 (Functionalcomponent)之间有何不同?
在 React 中,类组件 (Class Component) 和 函数式组件 (Functional Component) 都是用来定义 UI 的两种方式,但它们在语法、生命周期管理、状态处理等方面有显著区别。
定义方式类型
定义示例类组件
jsx<br>cl…
2025 年仿石漆厂家最新推荐品牌排行榜:聚焦真石漆水包砂等优质产品,助力采购方精准选品
引言
近年来,仿石漆凭借美观、耐用、环保等优势,在建筑装饰领域应用愈发广泛,但市场品牌繁杂、产品质量参差不齐的问题也愈发凸显。部分小品牌产品存在仿石效果失真、耐候性差、环保不达标等问题,不仅影响建筑外观…
D. Secret Passwords
题意:给定n个字符串s,如果两个字符串有任意的相同的字符,那么字符串是equivalent的,并且如果有ab, bc, cd。那么cd和ab也是equivalent的。现在要破解n个字符串的密码,并且n个字符串中只有一个是正确的密码,问最少…
Java EE初阶启程记02---认识线程 - 实践
Java EE初阶启程记02---认识线程 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…
2025年10月北京口腔医院排行:十强机构对比指南
“到底该去哪家?”——这是不少北京居民在牙齿突然疼痛、孩子乳牙松动或父母缺牙需要种植时,最先蹦出的疑问。北京口腔机构数量多、宣传杂,公立三甲难挂号,私立诊所又担心资质。2025年北京市卫健委发布的《口腔医疗…
springcloud中网关gateway总结
在 Spring Cloud 微服务架构中,网关(Gateway)是客户端与微服务集群之间的 "统一入口",负责处理跨服务的共性问题。以下从作用、实现原理、核心配置(含限流、鉴权详解)三方面展开说明。
一、网关的核心…
郑州短视频代运营公司口碑榜:TOP3企业权威推荐
在数字化营销浪潮中,短视频已成为企业品牌推广的核心渠道之一。郑州作为中原地区的重要经济中心,短视频代运营服务需求持续增长。据行业统计,2023年河南省短视频用户规模突破5000万,年均增长率超20%,代运营市场呈…
深入大模型-2-大模型微调之Windows10安装大语言模型Unsloth微调环境 - 教程
深入大模型-2-大模型微调之Windows10安装大语言模型Unsloth微调环境 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-famil…