根据 'weights' 计算 'Ranking' - 给定不同范围的值,公式是什么

Calculate 'Ranking' based on 'weights' - what's the formula , given different ranges of values

给定汽车列表及其最高速度、MPG 和汽车成本。我想给他们排名。速度 a 'weight' 为 50%,MPG 'weight' 为 30%,汽车成本为 20%。

车越快越好.. MPG越高越好... COST越低越好...

根据这个标准,我可以使用什么数学公式对汽车进行排序?

所以给出这个列表。我如何给他们排名?给定然后每个的范围都不同?

CAR     SPEED      MPG      COST 
A        135       20       50,000
B        150       15       60,000
C        170       18       80,000
D        120       30       40,000

您的问题的更通用术语是 'Multi-Criteria Decision Analysis',这是一个经过深入研究的主题,您将能够为不同的用例找到不同的模型。

让我们为您的案例采用一个简单的模型,我们将根据权重创建一个分数并为每辆车计算它:

import pandas as pd

data = pd.DataFrame({
    'CAR': ['A','B','C','D'],
    'SPEED': [135, 150, 170, 120],
    'MPG': [20, 15, 18, 30],
    'COST': [50000, 60000, 80000, 4000] 
})

def Score(df):
    return 0.5*df['SPEED'] + 0.3*df['MPG'] + 0.2*df['COST']

data['SCORE'] = data.apply(lambda x: Score(x), axis=1)

data = data.sort_values(by=['SCORE'], ascending=False)

print(data)

这会给我们:

  CAR  SPEED  MPG   COST    SCORE
2   C    170   18  80000  16090.4
1   B    150   15  60000  12079.5
0   A    135   20  50000  10073.5
3   D    120   30  40000   8069.0

正如您在函数 "SCORE" 中看到的那样,我们只是将值乘以权重并将它们相加以获得我们列出项目所基于的新值。

这里重要的考虑因素是您是否对我们在 Score 中使用的公式感到满意。您可以随心所欲地更改它,无论您出于何种目的构建模型。