当前位置:网站首页>R 熵权法计算权重及综合得分
R 熵权法计算权重及综合得分
2022-07-05 14:47:00 【第一次看海】
最近工作中需要根据大数据智能计算,预测或者推荐出供应链付款优先/权重来,以往都是人工根据供应商关系等因素做付款的一个优先级,并不能客观的将付款策略分发到其他供应商,现根据大数据客观计算,记录一下
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_mydt
w = 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中
边栏推荐
- 面试突击62:group by 有哪些注意事项?
- 2022年国内正规的期货公司平台有哪些啊?方正中期怎么样?安全可靠吗?
- World Environment Day | Chow Tai Fook serves wholeheartedly to promote carbon reduction and environmental protection
- Solution of commercial supply chain collaboration platform in household appliance industry: lean supply chain system management, boosting enterprise intelligent manufacturing upgrading
- 【NVMe2.0b 14-9】NVMe SR-IOV
- mysql8.0JSON_ Instructions for using contains
- maxcompute有没有能查询 表当前存储容量的大小(kb) 的sql?
- Topology visual drawing engine
- PyTorch二分类时BCELoss,CrossEntropyLoss,Sigmoid等的选择和使用
- Selection and use of bceloss, crossentropyloss, sigmoid, etc. in pytorch classification
猜你喜欢
PyTorch二分类时BCELoss,CrossEntropyLoss,Sigmoid等的选择和使用
有一个强大又好看的,赛过Typora,阿里开发的语雀编辑器
How to paste the contents copied by the computer into mobaxterm? How to copy and paste
【leetcode周赛总结】LeetCode第 81 场双周赛(6.25)
直播预告|如何借助自动化工具落地DevOps(文末福利)
Topology可视化绘图引擎
如何将电脑复制的内容粘贴进MobaXterm?如何复制粘贴
How to choose the appropriate certificate brand when applying for code signing certificate?
CyCa children's physical etiquette Ningbo training results assessment came to a successful conclusion
两个BI开发,3000多张报表?如何做的到?
随机推荐
安装配置Jenkins
Easyocr character recognition
【数组和进阶指针经典笔试题12道】这些题,满足你对数组和指针的所有幻想,come on !
【NVMe2.0b 14-9】NVMe SR-IOV
C language -- structure and function
CPU设计相关笔记
webRTC SDP mslabel lable
想进阿里必须啃透的12道MySQL面试题
Reconnaissance des caractères easycr
be careful! Software supply chain security challenges continue to escalate
Is the securities account given by the head teacher of qiniu school safe? Can I open an account?
微帧科技荣获全球云计算大会“云鼎奖”!
World Environment Day | Chow Tai Fook serves wholeheartedly to promote carbon reduction and environmental protection
CPU设计实战-第四章实践任务二用阻塞技术解决相关引发的冲突
【华为机试真题详解】字符统计及重排
机器学习框架简述
Dark horse programmer - software testing -10 stage 2-linux and database -44-57 why learn database, description of database classification relational database, description of Navicat operation data, de
2022年国内正规的期货公司平台有哪些啊?方正中期怎么样?安全可靠吗?
How to choose the appropriate certificate brand when applying for code signing certificate?
CPU设计实战-第四章实践任务三用前递技术解决相关引发的冲突