图解-使用【变异系数】赋予权重,并比较效果

图解-使用【变异系数】赋予权重,并比较效果变异系数CoefficientofVariation用于比较多组数据的离散程度比较两组量纲不同的数据的离散程度,不能用标准差,可考虑变异系数不适用场景:数据下限小于0(导致平均值等于0)变异系数权重法使用变异系数计得的权重值会随着数据的变化而变化,可认为是一种无监督学习

大家好,又见面了,我是你们的朋友全栈君。

概念

变异系数

  • Coefficient of Variation
  • 计算公式: 变 异 系 数 = 标 准 差 / 平 均 值 变异系数=标准差/平均值 =/
  • 比较 两组 量纲不同的数据 的 离散程度,不能用标准差,可考虑变异系数
    不适用场景:数据下限小于0(导致平均值近0)
    变异系数越大,离散程度越大

变异系数权重法

  • 通过变异系数来赋权
  • 计算方法: 权 重 i = 变 异 系 数 i / 全 部 变 异 系 数 的 和 权重_i=变异系数_i / 全部变异系数的和 i=i/
  • 离散程度较大的列会获得较高的权重参数
  • 使用变异系数计得的权重值会随着数据的变化而变化
  • 该方法应用场景不多,通常不建议使用
    什么场景考虑使用?没有标签 且 缺乏业务经验 时

Min-Max标准化

  • 计算方法: 新 数 据 = ( 原 数 据 − 最 小 值 ) / ( 最 大 值 − 最 小 值 ) 新数据 = ( 原数据 – 最小值 ) / ( 最大值 – 最小值 ) =()/()
  • 效果
    1、数据映射到[0,1]
    2、消除量纲差异
    3、放大差距
  • 场景:
    老师给学生评分(主观评分,如:文明分、品德分…)时,分数的区间是[0,100],即使有些学生很顽劣,也不会低于80分,结果所有学生的分数在80~100,优劣学生之间相差不到20%;使用Min-Max标准化或许可以还原出学生之间真实差距

Python代码实现+效果可视化

图解-使用【变异系数】赋予权重,并比较效果

原始数据(第1个表)

平均分 可理解为 全部特征的权重相等


5个员工平均分差别不大


员工1最弱逼,员工5最流弊,员工234相等


对平均分进行min-max标准化后,员工1的弱逼程度被放大


技术能力的变异系数最大,权重最高

MinMax标准化后的数据的平均分(第2个表)

员工4>3>2(不再相等)

对min-max标准化后的数据进行变异系数法加权(第3个表)

员工1反而变得最流弊,员工5反而变得最弱比
from pandas import DataFrame, Series
from sklearn.preprocessing import minmax_scale
from numpy import ndarray

# 原始数据
df: DataFrame = DataFrame({ 
   
    '员工编号': ['员工1', '员工2', '员工3', '员工4', '员工5'],
    '技术能力': [149, 120, 90, 60, 31],
    '管理能力': [80, 90, 100, 110, 120],
    '交际能力': [70, 90, 110, 130, 150],
})
print(df)

# 变异系数
coefficient_of_variation: Series = df.std() / df.mean()
print(coefficient_of_variation)

# 权重
weight: Series = coefficient_of_variation / sum(coefficient_of_variation)
print(weight)

# 对原始数据进行Min-Max标准化
mm: ndarray = minmax_scale(df[df.columns[1:]])
print(mm)

# Min-Max标准化后的数据与权重进行矩阵乘法,计算出总分
score: Series = mm.dot(weight)
print(score)

# 对总分进行MinMax标准化
df['MinMax标准化的总分']: Series = minmax_scale(score)
print(df['MinMax标准化的总分'])
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140815.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MQTT服务器部署

    MQTT服务器部署MQTT服务器部署现在物联网常用的通信方式有哪些?RF433/315M、蓝牙、Zigbee、wifi、以太网等等,通信协议也按不同功能分了许多种,例如TCP、MQTT等,具体可到https://blog.csdn.net/sinat_36098122/article/details/80930168研究。我当前用的比较多的是MQTT协议,它被较多的用来需要省电的设备通信上,采用发布/订阅的形式…

    2022年5月8日
    81
  • pytest的使用_新代子程序重复调用

    pytest的使用_新代子程序重复调用Pytest执行用例规则Pytest在命令行中支持多种方式来运行和选择测试用例1.对某个目录下所有的用例pytest2.对模块中进行测试pytesttest_mod.py3.对文件夹进行

    2022年7月31日
    10
  • spring boot 过滤器_拦截器和过滤器的区别面试

    spring boot 过滤器_拦截器和过滤器的区别面试原文地址:https://www.tsanyang.top/share-detail/739784336139616256.html最近实现一个权限控制功能,想通过拦截器进行实现,当业务一切按预期一样完成,有一个特别控制需要再拦截器对参数进行解析使用,但是发现当我们再拦截器读取了输入流,再控制器是无法获取到参数的,这个是由于输入流只能被读取一次,然后通过问题搜索了一把,看见网上通过重写HttpServletRequestWrapper实现输入流读取后,再写入回去,这样解决控制器无法获取参数问题,故在此做记

    2022年8月23日
    9
  • AFL 源码分析

    AFL 源码分析AFL 作为 C C 白盒 fuzzer 的鼻祖 为后来许多优秀的 fuzzer 提供了技术支持 衍生了很多 fuzzer 工具 本文只是站在巨人的肩膀上 参考了大量的博客 重新审计了部分源码 很多细节并没有深究 但对理解 AFL 的思想还是有一定作用的

    2025年11月14日
    3
  • Browserify_browses

    Browserify_browses1.Browserify是什么?“Browserifyletsyourequire(‘modules’)inthebrowserbybundlingupallofyourdependencies.”-Browserify.org出自官网的一句话。用通俗的话讲就是:browserify是一个浏览器端代码模块化工具,可以处理模块之间的依赖关系,让服务器端的

    2025年7月29日
    7
  • Java面试宝典:42个面试题总结!

    Java面试宝典:42个面试题总结!本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力。下面的章节分为上下两篇,第一篇将要讨论面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,第二篇主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servlet和JSP。开始!目录面向对象编

    2022年7月7日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号