权重计算方法"/>
变异系数+标准差率+一种改进的Critic权重计算方法
一种改进的Critic权重计算方法
当进行两个或多个资料变异程度的比较时,如果度量单位与平均数相同,
可以直接利用标准差来比较。如果单位和(或)平均数不同时,比较其变异程度就不能采用标准差,而需采用标准差与平均数的比值(相对值)来比较。
变异系数又称“标准差率”,是衡量资料中各观测值变异程度的另一个统计量。
公式表示为:变异系数CV=σ(X)/μ(X)
英文为用CV(Coefficient of Variance)。
CRITIC 权重法是一种客观赋权法。其思想在于用两项指标,分别是对比强度和冲突性指标。对比强度使用标准差进行表示,如果数据标准差越大说明波动越大,权重会越高;冲突性使用相关系数进行表示,如果指标之间的相关系数值越大,说明冲突性越小,那么其权重也就越低。对于多指标多对象的综合评价问题,CRITIC 法去消除一些相关性较强的指标的影响,减少指标之间信息上的重叠,更有利于得到可信的评价结果。
'''
@author: ZLM
一般来说,数据的量纲是不统一的,这种情况之下则不能直接使用标准差来衡量不同指标
之间的对比强度。一种常规的方法是对所有数据进行归一化来消除量纲对结果的影响,
但遗憾的是,归一化方法会改变指标之间的对比强度。
因此我们采用变异系数CV=σ(X)/μ(X)来表示指标之间的对比强度,如果数据变异系数越大说明波动越大,权重会越高。但是平均数会受到极端值的影响,中位数不受随机变量极大或极小值的影响,从而在一定程度上提高了中位数对随机变量分布的代表性。
鉴于此,我们采用如下公式计算变异系数CV=σ(X)/median(X)'''
import numpy as np
from sklearn.feature_selection import VarianceThreshold
from sklearn.datasets import load_breast_cancer,load_iris,load_wineX,y=load_wine(return_X_y=(True))
sel = VarianceThreshold()
X=sel.fit_transform(X)data=Xdef critic_weight(data):data_cv= np.std(data,axis=0)/np.median(data,axis=0) data_corr = np.abs(np.corrcoef(data.T))data_corr = sum(1 - data_corr)C = data_cv * data_corrcritic_weight= C/sum(C)return critic_weightW1=critic_weight(X)def critic_weight1(data):data_cv= np.std(data,axis=0)/np.mean(data,axis=0) data_corr = np.abs(np.corrcoef(data.T))data_corr = sum(1 - data_corr)C = data_cv * data_corrcritic_weight= C/sum(C)return critic_weightW2=critic_weight1(X)
更多推荐
变异系数+标准差率+一种改进的Critic权重计算方法
发布评论