java 商品评价计算算法
import java.io.Serializable; import java.lang.ref.ReferenceQueue; import java.lang.ref.WeakReference; import java.math.BigDecimal; import java.math.RoundingMode;/*** 商品评价算法* * @project icomment* @fileName ProductScore.java* @Description* @author light-zhang* @date 2018年1月15日下午4:44:40* @version 1.0.0*/ public abstract class CommentUtils implements Serializable {private static final long serialVersionUID = 8143504152635422263L;/*************************** 方案一 *******************************************/private static final double baby_ratio = 0.837;// 宝贝评价计算占比(0.837/千)private static final double merchant_ratio = 0.113;// 卖家态度计算占比(0.113/千)private static final double logistics_ratio = 0.0278;// 物流评价计算占比(0.0278/万)private static final double aplatfrom_ration = 0.0037;// 平台影响分A(0.0037/万)private static final double bplatfrom_ration = 0.0185; // 平台影响分B (0.0185/万)private static final double basic_score = 4.7463;// 最高分 /**************************************************************************//*** 方案一 宝贝占比较高,防止卖假货 宝贝评价 0.837(千分比) 5 卖家态度 0.113(千分比) 4 物流服务 0.0278(万分比) 3 平台影响* 0.0037(万分比) 2 平台影响 0.0185(万分比) 1* * @return*/public static BigDecimal babyScore(int baby, int merchant, int logistics) {double value = baby * baby_ratio + (merchant - 1) * merchant_ratio + (logistics - 2) * logistics_ratio+ (2 * aplatfrom_ration) + (1 * bplatfrom_ration);final BigDecimal result = getTemp(new BigDecimal(value));if (result.doubleValue() == basic_score) {return result.setScale(0, RoundingMode.HALF_UP);}return result.setScale(1, RoundingMode.HALF_UP);}/*************************** 方案二************************************************/private static final double syn_baby_ratio = 0.35;private static final double syn_merchant_ratio = 0.25;private static final double syn_logistics_ratio = 0.35;private static final double syn_aplatfrom_ration = 0.3;private static final double syn_bplatfrom_ration = 0.2;private static final double syn_basic_score = 4.6;/**************************************************************************//*** 综合占比率 * @param baby* @param merchant* @param logistics* @return*/public static BigDecimal synthetical(int baby, int merchant, int logistics) {double value = baby * syn_baby_ratio + (merchant - 1) * syn_merchant_ratio+ (logistics - 2) * syn_logistics_ratio + 2 * syn_aplatfrom_ration + 1 * syn_bplatfrom_ration;final BigDecimal result = getTemp(new BigDecimal(value));if (result.doubleValue() == syn_basic_score) {return result.setScale(0, RoundingMode.HALF_UP);}return result.setScale(1, RoundingMode.HALF_UP);}/*** 宝贝梯度 梯度 0失望 1不满意 2一般 3满意 4惊喜 默认返回3满意* * @param avgf* @return*/public static int grads(double avgf) {return (avgf <= 1.5) ? 0: (avgf > 1.5 && avgf <= 2.3) ? 1: (avgf > 2.3 && avgf <= 3.1) ? 2: (avgf > 3.1 && avgf <= 4.0) ? 3 : (avgf > 4.0 && avgf <= 5.0) ? 4 : 3;}private static <T> T getTemp(T classOfType) {ReferenceQueue<T> queue = new ReferenceQueue<T>();WeakReference<T> weakRef = new WeakReference<T>(classOfType, queue);if (null == weakRef.get()) {weakRef = new WeakReference<T>(classOfType);}return weakRef.get();} public static void main(String[] args) {int baby = 2;int merchant = 2;int logistics = 5;System.out.println("评测1 " + babyScore(baby, merchant, logistics));// 方案一 防止卖假货采用方案System.out.println("梯度1 >>>>> " + grads(babyScore(baby, merchant, logistics).doubleValue()));System.out.println("评测2 " + synthetical(baby, merchant, logistics));// 方案二 综合商家,宝贝,物流采用方案System.out.println("梯度2 >>>>> " + grads(synthetical(baby, merchant, logistics).doubleValue()));} }
* Taobao product evaluation
*
* @project icomment
* @fileName ProductScore.java
* @Description
* @author light-zhang
* @date January 15, 2018, 4:44:40 PM
* @version 1.0.0
*/ public abstract class CommentUtils implements Serializable {
Private static final long serialVersionUID = 8143504152635422263L;
Private static final double BABY_MAKE_UP = 0.837;// Baby evaluation calculation ratio (0.837/th) private static final double SELLER_MAKE_UP = 0.113;// Seller attitude calculation ratio (0.113/th) private static final double LOGISTICS_MAKE_UP = 0.0278;// Logistics evaluation calculation ratio (0.0278/Million) private static final double PLATFROM_CASHA = 0.0037;// Platform impact points A (0.0037/Million) private static final double PLATFROM_CASHB = 0.0185; // Platform impact points B (0.0185/Million) private static Final double PLATFROM_BASIC = 4.7463;// highest score /**
* Evaluation score calculation formula Baby evaluation 0.837 (thousands ratio) 5 Seller attitude 0.113 (thousands ratio) 4 Logistics service 0.0278 (10,000 ratio) 3 Platform impact
* 0.0037 (parts ratio) 2 Platform impact 0.0185 (10,000 ratio) 1
*
* @param babyMark baby description
* @param sellerMark Business attitude
* @param logisticsMark Logistics Services
* @return 5 points × 0.837 + 4 points × 0.113 + 3 points × 0.0278 + 2 points × 0.0037 + 1 points × 0.015 = 4.7463
*/ public static BigDecimal avgProductScore(int babyMark, int sellerMark, int logisticsMark) {
Double value = babyMark * BABY_MAKE_UP + (sellerMark - 1) * SELLER_MAKE_UP
+ (logisticsMark - 2) * LOGISTICS_MAKE_UP + (2 * PLATFROM_CASHA) + (1 * PLATFROM_CASHB);
Final BigDecimal result = new BigDecimal(value);
If (result.doubleValue() == PLATFROM_BASIC) {// highest score return result.setScale(0, RoundingMode.HALF_UP);
}
Return result.setScale(1, RoundingMode.HALF_UP);
}
/**
* Gradient 0 Disappointment 1 Dissatisfied 2 General 3 Satisfied 4 Surprise Default 3 Satisfied
*
* @return */ public static int grads(double avgf) {
Return (avgf <= 1.5) ? 0
: (avgf > 1.5 && avgf <= 2.3) ? 1
: (avgf > 2.3 && avgf <= 3.1) ? 2
: (avgf > 3.1 && avgf <= 4.0) ? 3
: (avgf > 4.0 && avgf <= 5.0) ? 4 : 3;
}
Public static void main(String[] args) {
System.out.println(CommentUtils.avgProductScore(5, 3, 4).doubleValue());
System.out.println(CommentUtils.grads(4.5));
}
}
转载于:https://www.cnblogs.com/light-zhang/p/8349576.html
java 商品评价计算算法相关推荐
- java 商品评价_java 商品评价计算算法
importjava.io.Serializable;importjava.lang.ref.ReferenceQueue;importjava.lang.ref.WeakReference;impo ...
- java 淘宝商品评价计算算法
package com.zeelan.app.score;import java.io.Serializable; import java.math.BigDecimal; import java.m ...
- Vue.js+Mysq+java+springboot+商品推荐算法实现商品推荐网站+商品管理系统后台
面对海量的商品信息如何实现针对不同用户维度开展个性化商品推荐,实现用户线上选购商品,下订单,支付,物流配送等?本次毕设程序基于前后端分离开发模式,搭建系统网络商品推荐系统前台与系统后台商品管理系统,通 ...
- 基于java与springboot结合商品推荐算法实现商品推荐网站+商品管理系统后台,mysql,vue
面对海量的商品信息如何实现针对不同用户维度开展个性化商品推荐,实现用户线上选购商品,下订单,支付,物流配送等?本次毕设程序基于前后端分离开发模式,搭建系统网络商品推荐系统前台与系统后台商品管理系统,通 ...
- java hanlp分词_Hanlp分词实例:Java实现TFIDF算法
算法介绍 最近要做领域概念的提取,TFIDF作为一个很经典的算法可以作为其中的一步处理. 关于TFIDF算法的介绍可以参考这篇博客http://www.ruanyifeng.com/blog/2013 ...
- Java使用动态规划算法思想解决01背包问题
Java使用动态规划算法思想解决背包问题 背包问题是一种组合优化的NP完全问题.问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高 动 ...
- Java 数据结构与算法系列之冒泡排序
一.前言 相信大部分同学都已经学过数据结构与算法这门课了,并且我们可能都会发现一个现象就是我们所学过的数据结构与算法类的书籍基本都是使用 C 语言来写的,好像没见过使用 Java 写的数据结构与算法. ...
- Java数据结构与算法——树(基本概念,很重要)
声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 有网友私信我,期待我的下一篇数据结构.非常荣幸文章被认可,也非常感谢你们的监督. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督 ...
- Java常见排序算法
Java常见排序算法 转载于:https://www.cnblogs.com/hfultrastrong/p/7829889.html
最新文章
- SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题...
- Linux那些事儿 之 戏说USB(4)最终奥义
- DFT的准备(二)(对离散时间傅里叶变换DTFT采样)
- python2和python3同时存在如何使用pip
- Ubuntu(Linux)上安装ROS缓慢,解决方法:添加ros的国内镜像源,以及ROS安装过程使用rosdep update出现错误:‘The read operation timed out‘
- Linux 双网卡绑定
- 你听过或见过最无耻的一句话是什么?
- 《Python语言程序设计》二级教程课后编程题及答案
- oracle 授权所有语句,oracle grant 授权语句
- Python中文字符串,变成英文字符串
- 我的世界Java版最诡异的种子_我的世界:比666还诡异的故障种子,无限复制结构?官方:还是特性...
- centos设置东八区
- unity3d Daikon GUI 图片查看器 Demo 说明
- 如何成为有效学习的高手(笔记)
- Hi3798CV200DMD_VER.B SCH原理图
- 感觉世界变化太快...
- matlab中求立方根,MATLAB基础入门
- 计算机网络Wireshark实验-棋歌教学网
- jQuery整体框架
- linux下生成nginx证书 【超简洁步骤】