java 商品评价_java 商品评价计算算法
importjava.io.Serializable;importjava.lang.ref.ReferenceQueue;importjava.lang.ref.WeakReference;importjava.math.BigDecimal;importjava.math.RoundingMode;/*** 商品评价算法
*
* @project icomment
* @fileName ProductScore.java
* @Description
*@authorlight-zhang
* @date 2018年1月15日下午4:44:40
*@version1.0.0*/
public abstract class CommentUtils implementsSerializable {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, intlogistics) {double value = baby * baby_ratio + (merchant - 1) * merchant_ratio + (logistics - 2) *logistics_ratio+ (2 * aplatfrom_ration) + (1 *bplatfrom_ration);final BigDecimal result = getTemp(newBigDecimal(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;/**************************************************************************/
/*** 综合占比率
*@parambaby
*@parammerchant
*@paramlogistics
*@return
*/
public static BigDecimal synthetical(int baby, int merchant, intlogistics) {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(newBigDecimal(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满意
*
*@paramavgf
*@return
*/
public static int grads(doubleavgf) {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 getTemp(T classOfType) {
ReferenceQueue queue = new ReferenceQueue();
WeakReference weakRef = new WeakReference(classOfType, queue);if (null ==weakRef.get()) {
weakRef= new WeakReference(classOfType);
}returnweakRef.get();
}public static voidmain(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()));
}
}
java 商品评价_java 商品评价计算算法相关推荐
- java数据结构 队列_Java数据结构与算法[原创]——队列
声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本文介绍数据结构中的队列(queue)的概念.存储结构.队列的特点,文末给出ja ...
- java 性能 排序_Java常用排序算法及性能测试集合
package algorithm.sort; import java.lang.reflect.Method; import java.util.Arrays; import java.util.D ...
- java setlt;intgt;_java使用Nagao算法实现新词发现、热门词的挖掘
采用Nagao算法统计各个子字符串的频次,然后基于这些频次统计每个字符串的词频.左右邻个数.左右熵.交互信息(内部凝聚度). 名词解释: Nagao算法:一种快速的统计文本里所有子字符串频次的算法.详 ...
- java遍历字符串_Java后端开发算法基础面试题分享,你离大厂也许就差这份面试题
一.算法基础 1. 重建二叉树 题目: 输入一棵二叉树前序遍历和中序遍历的结果,请重建该二叉树. 注意: 二叉树中每个节点的值都互不相同: 输入的前序遍历和中序遍历一定合法: 演示: 给定: 前序遍历 ...
- java加减法验证码_Java,Springboot 实现算法验证码加减法图形验证码,Kaptcha 实现加减法验证码...
最近在做一个加减法验证码,记录下实现的过程. 通常Java实现验证码的工具会用到 kaptcha 这个工具包,但实现的验证码都是图形验证码,没有看到加法验证码,查询了相关资料,实现了加减法验证码,效果 ...
- bom展开算法 java程序实现_java实现aprior算法
/** * 频繁项集 */ public class FrequentNode { //包含哪些项 private String[] subjects; //几项集 private int k; // ...
- Java基础类冒泡排序_Java基础 -- 冒泡排序算法(带详细注释)
冒泡排序的要点: 1.多轮排序,每轮排序中选出最大的元素放在最顶端,并且下次排序不再使用该元素; 2. 使用双for循环,外层for循环控制要排序的次数(轮数), 内层for循环控制当前要排序的元素并 ...
- java sha256 实现_Java实现SHA256算法
import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.securit ...
- java 数据结构 无向图_Java数据结构和算法(十五)——无权无向图
前面我们介绍了树这种数据结构,树是由n(n>0)个有限节点通过连接它们的边组成一个具有层次关系的集合,把它叫做"树"是因为它看起来像一棵倒挂的树,包括二叉树.红黑树.2-3- ...
最新文章
- 计算机桌面文件管理窗口,隐藏Win10此电脑窗口的6个额外文件夹
- java中怎么固定间距_java中的GridBagLayout是怎么调组件间距的...
- 详解/etc/fstab文件内容
- WIN7无法记住远程登录密码
- apache ii评分和死亡率_高大上的风险分层系统:APACHE评分到底是啥?
- Fbric、Ansible、Docker、Chaos Monkey:DevOps工具的年中回顾
- 数据科学竞赛-房价预测
- 四面阿里,看看你都会吗
- 为什么离开学校后,学习能力直线下降?
- webservie报文格式
- Facebook将偷来的3D对象数据库用于其AI项目:被诉讼
- 电脑不香吗?我在手机上装Python我图什么?
- 达芬奇DaVinci Resolve Studio Mac v17.4.6
- 【skimage.util.shape】有关view_as_windows裁剪数组及恢复的简单尝试
- 8uFTP连不上阿里云,4步解决8uFTP连不上阿里云问题
- h3c交换机重启_h3c交换机常用命令
- Ubuntu 20.04(Linux Mint XFCE 20)安装LBP2900打印机
- centos 6.8 请教笔记本上的虚拟机如何配置无线网络 桥接联网
- BERT-MRC:统一化MRC框架提升NER任务效果
- 图像恢复 SWinIR : 彻底理解论文和源代码 (注释详尽)