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)或熵权法等,根据判断矩阵/数据分布计算。
根据具体需求选择对应的方法即可。