基于多指标加权平均的汽车排名方法及Python实现方案咨询
汽车加权排名计算及实现方案
1. 排名计算公式
由于三个维度的量纲、数值范围差异极大,不能直接加权求和,需要先做归一化处理将所有指标映射到[0,1]区间后再按权重计算总评分,总评分越高排名越靠前,具体公式分两步:
步骤1:各维度归一化计算
- 最高时速(越高越好)归一化:
norm_SPEED = (当前车辆SPEED - 所有车辆SPEED最小值) / (所有车辆SPEED最大值 - 所有车辆SPEED最小值) - 燃油经济性(越高越好)归一化:
norm_MPG = (当前车辆MPG - 所有车辆MPG最小值) / (所有车辆MPG最大值 - 所有车辆MPG最小值) - 购车成本(越低越好)归一化:
norm_COST = (所有车辆COST最大值 - 当前车辆COST) / (所有车辆COST最大值 - 所有车辆COST最小值)
步骤2:加权计算总评分
总评分 = 0.5 * norm_SPEED + 0.3 * norm_MPG + 0.2 * norm_COST
2. 示例车辆排序结果
先统计示例数据中各维度的极值:
- SPEED极值:最小值120,最大值170
- MPG极值:最小值15,最大值30
- COST极值:最小值40000,最大值80000
逐一计算四辆车的总评分后排序结果如下:
| 排名 | 车辆编号 | 总评分 |
|---|---|---|
| 1 | C | 0.56 |
| 2 | D | 0.5 |
| 3 | A | 0.4 |
| 3 | B | 0.4 |
3. 代码实现方案
常用的实现工具包括Pandas(结构化数据处理最便捷)、NumPy(大规模数据向量化计算效率高),也可以用纯Python原生语法实现。
Pandas实现示例
import pandas as pd # 构造示例数据集 car_data = { "CAR": ["A", "B", "C", "D"], "SPEED": [135, 150, 170, 120], "MPG": [20, 15, 18, 30], "COST": [50000, 60000, 80000, 40000] } df = pd.DataFrame(car_data) # 归一化处理 df["norm_SPEED"] = (df["SPEED"] - df["SPEED"].min()) / (df["SPEED"].max() - df["SPEED"].min()) df["norm_MPG"] = (df["MPG"] - df["MPG"].min()) / (df["MPG"].max() - df["MPG"].min()) df["norm_COST"] = (df["COST"].max() - df["COST"]) / (df["COST"].max() - df["COST"].min()) # 计算总评分并排序 df["total_score"] = 0.5 * df["norm_SPEED"] + 0.3 * df["norm_MPG"] + 0.2 * df["norm_COST"] sorted_df = df.sort_values(by="total_score", ascending=False).reset_index(drop=True) # 输出排名结果 print(sorted_df[["CAR", "total_score"]])
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

