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

如何用Python编程计算权重?

 

1. 加权平均中的权重计算(已知权重值)

 

如果已知各元素的权重,直接用权重乘以对应值后求和。

 

# 示例:计算加权平均分(权重之和为1)

scores = [80, 90, 70] # 各项分数

weights = [0.3, 0.5, 0.2] # 对应权重

 

# 方法1:循环计算

weighted_sum = 0

for s, w in zip(scores, weights):

    weighted_sum += s * w

print(f"加权平均分:{weighted_sum}") # 结果:82.0

 

# 方法2:用numpy简化(适合大量数据)

import numpy as np

print(np.dot(scores, weights)) # 结果:82.0

 

 

2. 特征权重(机器学习场景)

 

通过模型自动计算特征的重要性(如决策树、线性回归)。

 

from sklearn.linear_model import LinearRegression

from sklearn.datasets import load_diabetes

 

# 加载数据

data = load_diabetes()

X, y = data.data, data.target

 

# 训练线性回归模型,系数即特征权重

model = LinearRegression()

model.fit(X, y)

 

# 输出各特征的权重

print("特征权重:", model.coef_)

 

 

3. 层次分析法(AHP)计算权重

 

用于多准则决策中,通过判断矩阵计算权重。

 

import numpy as np

 

def ahp_weight(matrix):

    """根据判断矩阵计算权重(特征值法)"""

    eigenvalues, eigenvectors = np.linalg.eig(matrix)

    max_idx = np.argmax(eigenvalues)

    max_eigen = eigenvalues[max_idx].real

    # 归一化特征向量得到权重

    weights = eigenvectors[:, max_idx].real

    return weights / np.sum(weights)

 

# 示例判断矩阵(3个元素的相对重要性)

judge_matrix = np.array([

    [1, 2, 3],

    [1/2, 1, 2],

    [1/3, 1/2, 1]

])

 

print("AHP权重:", ahp_weight(judge_matrix)) # 结果约为 [0.5396, 0.3090, 0.1514]

 

- 简单加权计算:直接用元素×权重求和(适合已知权重)。

- 模型权重:调用sklearn等库的模型,通过 coef_ 或 feature_importances_ 获取。

- 决策权重:用层次分析法(AHP)或熵权法等,根据判断矩阵/数据分布计算。

 

根据具体需求选择对应的方法即可。

http://www.dtcms.com/a/270082.html

相关文章:

  • Anolis OS 23 架构支持家族新成员:Anolis OS 23.3 版本及 RISC-V 预览版发布
  • 数据库设计精要:完整性和范式理论
  • 去掉长按遥控器power键后提示关机、飞行模式的弹窗
  • 数据提取之lxml模块与xpath工具
  • 基于Java+SpringBoot 协同过滤算法私人诊所管理系统
  • 系统架构设计师论文分享-论系统安全设计
  • IoTDB:专为物联网场景设计的高性能时序数据库
  • 把word中表格转成excle文件
  • 基于GeoTools的根据Shp文件生成完全包围格网实战
  • Oracle 存储过程、函数与触发器
  • AI标注平台label-studio之二添加机器学习后端模型辅助标注
  • vue3官方文档学习心得
  • SpringCloud系列 - Gateway 网关功能(五)
  • 人体坐姿检测系统开发实战(YOLOv8+PyTorch+可视化)
  • 本地部署 R 语言环境运行软件 RStudio Server 并实现外部访问
  • 玩具语音方案选型决策OTP vs Flash 的成本功耗与灵活性
  • window wsl 环境下编译openharmony,HarmonyOS 三方库 FFmpeg
  • VLLM 调用有哪些超参数; clean_up_tokenization_spaces是什么
  • ubuntu24.04安装NFS网络文件系统/ARM开发板NFS挂载
  • 20250708-03-string结构及命令详解_笔记
  • CI/CD — DevOps概念之实现k8s持续交付持续集成(一)
  • NumPy-统计函数详解
  • UE5内置插件 AnimToTexture 简单入门
  • 一次编码,多端运行:HTML5多终端调用
  • Android 依赖注入框架详解
  • 2025年7月8日学习笔记——模式识别与机器学习绪论
  • bro code Interface
  • 社区云管家 - 智慧生活新方式 ——仙盟创梦IDE
  • 玩转Docker | 使用Docker部署HomeBox家庭库存管理工具
  • NestJS 系列教程(四):中间件、中断器与异常过滤器详解