最近工作中需要根据大数据智能计算,预测或者推荐出供应链付款优先/权重来,以往都是人工根据供应商关系等因素做付款的一个优先级,并不能客观的将付款策略分发到其他供应商,现根据大数据客观计算,记录一下

1,获取数据

获取数据从starRocks,

library(RMySQL)
library(tibble)
library(dplyr)
criterions_cite <- function(){#建立连接,project_name表示项目数据库名称conn <- dbConnect(MySQL(), dbname = 'ods', username = 'pxxx', password = 'xxx', host = 'xx.xx.xx.xx', port = 9030)#如果表中有中文出现乱码,可以添加以下代码#dbSendQuery(conn, 'SET NAMES GBK')#sheet_name表示需要读取的表格名称filter_statements <- paste0('SELECT * FROM ods_fkyc_local')#过滤数据res <- dbSendQuery(conn, filter_statements)#提取数据,-1表示全部提取,3表示取三行数据dat <- dbFetch(res, -1)#关闭RMySQL中的数据集dbClearResult(dbListResults(conn)[[1]])#关闭连接dbDisconnect(conn)return(dat)
}
# 从数据库拿到数据集
mydt <- criterions_cite()
tb.mydt <- as_tibble(mydt)

2,指定指标项的正,负向指标

像销售额,负卖金额越大越好的指定为正向指标

像残次库存,滞销库存,欠收金额 这种指标约少越好指定为负向指标

# 1,归一化,正向指标
min_max_norm <- function(x) {(x - min(x)) / (max(x) - min(x))
}
# 负向指标
max_min_norm <- function(x) {(max(x) - x) / (max(x) - min(x))
}# 归一化处理,先处理正项指标
min_max_norm_mydt <- tb.mydt %>% mutate(across(c(9,13,14), min_max_norm))
# 再先处理负项指标
max_min_norm_mydt <- min_max_norm_mydt %>% mutate(across(c(10,11,12), max_min_norm))

3,归一化后计算指标

p_value <- function(x){x / sum(x)
}
p_mydt <- max_min_norm_mydt %>% mutate(across(c(9:14), p_value))## 计算熵值
entropy <- function(x){n <- length(x)(-1 / log2(n)) * (sum( x * ifelse(log2(x)==-Inf, 0, log2(x)) ))
}e_mydt <- p_mydt %>% summarise(across(c(9:14), entropy))
e_mydt
d_mydt = 1-e_mydt
d_mydtw = d_mydt/sum(d_mydt)
w

w及为权重

4,再计算综合得分并排名,之后导出

fscore <- function(x, y){sum(x*y)
}old_data <- rename(tb.mydt[,9:14],c(old_ZPO_K001_sum="ZPO_K001_sum",old_zpo_k006_sum="zpo_k006_sum",old_zx0030_sum="zx0030_sum",old_fyjj201to03_sum="fyjj201to03_sum",old_wpfm_sum="wpfm_sum",old_total_amount="total_amount"))
result_data=cbind(max_min_norm_mydt,old_data)mydt3 <- result_data %>% group_by(1:n()) %>% mutate(score = fscore(c_across(9:14), w)) %>% arrange(-score) %>% ungroup() %>% select("com_code","organization_name","lifnr","name1","dept_no","dept_name","brand_code","brand_name","ZPO_K001_sum","zpo_k006_sum","zx0030_sum","fyjj201to03_sum","wpfm_sum","total_amount","old_ZPO_K001_sum","old_zpo_k006_sum","old_zx0030_sum","old_fyjj201to03_sum","old_wpfm_sum","old_total_amount","score")write.table(mydt3, file = "/app/bigdata_app/data/fkyc/MyData.csv",quote = FALSE,row.names=FALSE, col.names=FALSE)

将计算完的数据导出csv文件,并streamload进starRocks中

R 熵权法计算权重及综合得分相关推荐

  1. Python小案例(六)通过熵权法计算指标权重

    Python小案例(六)通过熵权法计算指标权重 在日常业务中,产品运营需要综合多个指标进行判断,如果没有目标变量进行监督训练的话,很难人为地判断哪个指标更好,综合起来哪个类别更优秀. 这里介绍一种基于 ...

  2. 帮我用python写一个程序 输入三个列表数据 使用熵权法计算这三组数据的权重并输出...

    好的,以下是用Python实现熵权法计算三组数据权重的代码: import numpy as np# 定义熵权法函数 def entropy_weight(x):x = np.array(x)# 计算 ...

  3. 手把手教你用熵值法计算权重

    由于对数据要求少,且容易计算,熵值法一直是备受欢迎的权重计算方法. 今天的文章,将带大家一起梳理熵值法计算权重的步骤以及如何应用到综合评价研究中. 一.研究背景 研究案例是利用熵值法来对各企业的财务状 ...

  4. 多目标决策问题1.1.1:线性加权法——熵权法确定权重

    多目标决策问题是目前数学建模中比较普遍的一类问题, 此类问题要求我们满足多个目标函数最优与决策变量的线性约束条件或非线性约束条件下进行求解, 多目标决策问题主要有主要目标法.线性加权法.分层序列法.步 ...

  5. 熵值法计算权重有异常值_指标权重确定方法 1-熵值法

    在信息论中,熵是对不确定性或随机性的一种度量,不确定性越大,熵值就越大,不确定性越小,熵值就越小.不确定性越大,表明随机性越大,数据越离散,则包含的信息就越大,在确定权重的时候往往就越小. 熵值法确定 ...

  6. excel熵值法计算权重_指标权重确定方法 1-熵值法

    在信息论中,熵是对不确定性或随机性的一种度量,不确定性越大,熵值就越大,不确定性越小,熵值就越小.不确定性越大,表明随机性越大,数据越离散,则包含的信息就越大,在确定权重的时候往往就越小. 熵值法确定 ...

  7. excel熵值法计算权重_SPSS主成分分析 | 指标权重值计算真的不难!(上)

    一 指标权重计算确定的困惑 相信很多写过或者正在写指标处理类论文的朋友都曾对如何计算指标权重充满困惑,到底是用熵值法,还是主成分分析法?或者其他各种看起来奥妙无穷却难以上手操作的神奇方法?好不容易确定 ...

  8. excel熵值法计算权重_SPSS主成分分析 | 权重计算amp;极差法标准化超详细教程!(下)...

    权重计算 1. 上节回顾 爱数据-橙子:SPSS主成分分析 | 指标权重值计算真的不难!(上)​zhuanlan.zhihu.com 在昨日中(点击复习),我们利用SPSS中的数据标准化方法及主成分分 ...

  9. excel熵值法计算权重_熵值法的Excel基本步骤

    各位亲们,前天从盐城回来,我收拾收拾就开始忙着补上上个星期拖的更了.本期主要内容主要是对盐城滨海湿地野外采样的总结,在论文写作中指标权重的赋予,以及分享几套宁波大学特有的PPT模板. 从7月28日-8 ...

最新文章

  1. 软件开发计划_敏捷软件开发实践:估算与计划读书笔记113第11章 确定渴望度优先级...
  2. 使用 VNC 无屏幕远程连接树莓派
  3. 降维(二)----Laplacian Eigenmaps
  4. 可用子网数要不要减2_CCNA最实用的复习知识点(2)
  5. MySQL之权限索引学习整理
  6. CDN - 域名解析错误排查
  7. IDC机房KVM应用案例分析
  8. 线程池原理及C语言实现线程池
  9. 前端学习(1297):第三方模块gulp
  10. 技术演讲的技巧和经验
  11. 1.SpringMVC 概述
  12. 普通人学python有啥用-学习Python到底有什么用?
  13. LPVOID和PVOID的区别是什么
  14. 每次开机都要按F1的解决办法
  15. IEEE ICCSE 2022 Call for Papers (征文公告)
  16. python excel sheet_人生苦短我学Python——Excel处理之快速创建多个Sheet并重命名
  17. Eclipse4.2安装FlashBuilder插件
  18. 这篇文章,我们来谈一谈Spring中的属性注入
  19. 用python判断是否为闰年。节气,一年的天数,一年还剩多少天
  20. Spring 是什么?如何去了解spring?

热门文章

  1. 【git】当git出现On branch master Changes not staged for commit:
  2. Wireshark 的RTMP抓包里面0x0 unknown的问题
  3. 【githubshare】一款开源的网站监控工具,监控当前网站的运行状态
  4. Python实训报告:学生信息管理系统
  5. 以太坊网络区块浏览器blocksout技术简要分析
  6. Python周刊502期
  7. 王怀南+邵亦波+王建硕=?
  8. mysql对存储分布式文件系统的存储需求总结
  9. JavaFX专业开发者与业余开发者之间就差一个一个Icon packs
  10. 【乐逍遥网站设计】网站设计一般多少钱