当前位置: 首页 > news >正文

可以自己做网站服务器不设置本机外网ip做网站

可以自己做网站服务器不,设置本机外网ip做网站,如何优化网站首页代码,创意设计公司经营范围目录 简介 协同过滤算法(简称CF) 算法详解 算法使用 基于用户 基于物品 总结 前言-与正文无关 生活远不止眼前的苦劳与奔波#xff0c;它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中#xff0c;我们往往容易陷入工作的漩涡#xff0c;忘记了停…  目录 简介 协同过滤算法(简称CF) 算法详解 算法使用 基于用户 基于物品 总结 前言-与正文无关 生活远不止眼前的苦劳与奔波它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中我们往往容易陷入工作的漩涡忘记了停下脚步感受周围的世界。让我们一起提醒自己要适时放慢脚步欣赏生活中的每一道风景享受与家人朋友的温馨时光发现那些平凡日子里隐藏的幸福时刻。因为这些点点滴滴汇聚起来的才是构成我们丰富多彩生活的本质。希望每个人都能在繁忙的生活中找到自己的快乐之源不仅仅为了生存而工作更为了更好的生活而生活。 送你张美图希望你开心 简介 协同过滤算法(简称CF) 在早期协同过滤几乎等同于推荐系统。主要的功能是预测和推荐。协同过滤推荐算法分为两类分别是 英文userCF 基于用户的协同过滤算法(相似的用户可能喜欢相同物品)这个一般适合推荐新闻和皮皮虾之类的数据跟人有很大关系而且信息是每日都是更新的。如果你推荐购物这种因为一个新建的用户可能购买的商品不足全量商品万分之1商品数据量大人对商品购买少很难找到相似的人随着用户和物品数量的增加计算复杂度增加所以需要这种更适合第二种算法。 英文itemCF 基于物品的协同过滤算法这种方法通过分析物品之间的相似性根据用户喜欢的物品推荐最大相似度其他物品。比如用户喜欢物品A然后通过算法的出物品C和A的相似度极高那么用户有可能喜欢物品C。当然也有缺点:需要足够的用户-物品交互数据来找出物品之间的相似性。 算法详解 如果想知道算法细节可以看我的皮尔森相关系数介绍这边只是代码级别 推荐系统算法 协同过滤算法详解二皮尔森相关系数-CSDN博客 算法使用 下面例子都是基于电影推荐系统做的向用户推荐喜欢的电影。核心有几个字段1用户id2电影id3是评分。如果你不是电影推荐而是其他其实代码都一样逻辑也都大差不差。 核心协同过滤算法类不管你是基于用户还是基于商品电影都需要使用的是皮尔森相关系数 package com.tarzan.recommend.core;import com.tarzan.recommend.dto.RelateDTO; import org.assertj.core.util.Lists;import java.util.*; import java.util.stream.IntStream;/*** 核心算法**/ public class CoreMath {/*** 计算相关系数并排序* param key* param map* return MapInteger,Double*/public static MapInteger,Double computeNeighbor(Integer key, MapInteger,ListRelateDTO map,int type) {MapInteger,Double distMap new TreeMap();ListRelateDTO userItemsmap.get(key);map.forEach((k,v)-{//排除此用户if(!k.equals(key)){//关系系数double coefficient relateDist(v,userItems,type);//关系距离// double distanceMath.abs(coefficient);distMap.put(k,coefficient);}});return distMap;}/*** 计算两个序列间的相关系数** param xList* param yList* param type 类型0基于用户推荐 1基于物品推荐* return double*/private static double relateDist(ListRelateDTO xList, ListRelateDTO yList,int type) {ListDouble xs Lists.newArrayList();ListDouble ys Lists.newArrayList();xList.forEach(x-{yList.forEach(y-{if(type0){if(x.getItemId().equals(y.getItemId())){xs.add(x.getIndex());ys.add(y.getIndex());}}else{if(x.getUseId().equals(y.getUseId())){xs.add(x.getIndex());ys.add(y.getIndex());}}});});return getRelate(xs,ys);}/*** 方法描述: 皮尔森pearson相关系数计算** param xs x集合* param ys y集合*/public static double getRelate(ListDouble xs, ListDouble ys){int nxs.size();//至少有两个元素if (n2) {return 0D;}double Ex xs.stream().mapToDouble(x-x).sum();double Eyys.stream().mapToDouble(y-y).sum();double Ex2xs.stream().mapToDouble(x-Math.pow(x,2)).sum();double Ey2ys.stream().mapToDouble(y-Math.pow(y,2)).sum();double Exy IntStream.range(0,n).mapToDouble(i-xs.get(i)*ys.get(i)).sum();double numeratorExy-Ex*Ey/n;double denominatorMath.sqrt((Ex2-Math.pow(Ex,2)/n)*(Ey2-Math.pow(Ey,2)/n));if (denominator0) {return 0D;}return numerator/denominator;}}实体类 package com.tarzan.recommend.dto;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;/*** 关系数据**/ Data AllArgsConstructor NoArgsConstructor public class RelateDTO {/** 用户id */private Integer useId;/** 电影id */private Integer itemId;/** 评分 */private Double index;}基于用户 入参是你要给推荐具体电影的当前用户id package com.tarzan.recommend.service;import com.tarzan.recommend.core.ItemCF; import com.tarzan.recommend.core.UserCF; import com.tarzan.recommend.dto.ItemDTO; import com.tarzan.recommend.dto.RelateDTO;import java.util.List; import java.util.stream.Collectors;/*** 推荐服务**/ public class Recommend{/*** 方法描述: 猜你喜欢** param userId 用户id*/public static ListInteger userCfRecommend(int userId){ListRelateDTO data Sql获取不同用户对不同电影评分关系;// 获取到推荐的电影idListInteger recommendations UserCF.recommend(userId, data);return recommendations ;}} package com.tarzan.recommend.core;import com.tarzan.recommend.dto.RelateDTO;import java.util.*; import java.util.stream.Collectors;/*** 核心算法** since JDK1.8*/ public class ItemCF {/*** 方法描述: 推荐电影id列表** param itemId 当前电影id* param list 用户电影评分数据* return {link ListInteger}*/public static ListInteger recommend(Integer itemId, ListRelateDTO list) {//按物品分组MapInteger, ListRelateDTO itemMaplist.stream().collect(Collectors.groupingBy(RelateDTO::getItemId));//获取其他物品与当前物品的关系值MapInteger,Double itemDisMap CoreMath.computeNeighbor(itemId, itemMap,1);//获取关系最近物品double maxValueCollections.max(itemDisMap.values());return itemDisMap.entrySet().stream().filter(e-e.getValue()maxValue).map(Map.Entry::getKey).collect(Collectors.toList());}}基于物品 入参是当前用户曾经评过高分的电影id以此通过算法推荐和此电影相似度高的电影 package com.tarzan.recommend.service;import com.tarzan.recommend.core.ItemCF; import com.tarzan.recommend.core.UserCF; import com.tarzan.recommend.dto.ItemDTO; import com.tarzan.recommend.dto.RelateDTO;import java.util.List; import java.util.stream.Collectors;/*** 推荐服务**/ public class Recommend{/*** 方法描述: 猜你喜欢** param itemId 电影id*/public static ListInteger userCfRecommend(int userId){ListRelateDTO data Sql获取不同用户对不同电影评分关系;// 获取到推荐的电影idListInteger recommendations ItemCF.recommend(itemId, data);return recommendations ;}} 总结 建议使用基于物品的协同过滤算法基于物品协同过滤可以预先计算好物品间的相似度在线查询要比基于用户快的多且基于物品实际效果质量一般比基于用户高但这个也不是绝对的像是抖音这中视频都是最新更新的还是基于用户靠谱。 系数计算要保证分数值至少每行两个首要条件其次对比值要多少的话就没有那么理想结果 ------------------------------------------与正文内容无关------------------------------------ 如果觉的文章写对各位读者老爷们有帮助的话麻烦点赞加关注呗作者在这拜谢了! 混口饭吃了如果你需要Java 、Python毕设、商务合作、技术交流、就业指导、技术支持度过试用期。请在关注私信我本人看到一定马上回复 这是我全部文章所在目录看看是否有你需要的如果遇到觉得不对地方请留言看到后我会查阅进行改正。 A乐神-CSDN博客 关注在文章左上角作者信息处。
http://www.zqtcl.cn/news/300633/

相关文章:

  • 青岛网站建设seo优化wordpress分类标题自定义
  • 网站开发本地环境在海南注册公司需要多少钱
  • 济南网站开发去哪儿旅行app下载安装
  • 大城 网站北京做网站男生工资
  • 赣州网站建设百家号免费软件网
  • 在合肥做网站多少钱网站开发外包平台
  • 百度指数查询平台网站建设SEO优化哪家好
  • 网站怎么在成都备案中企动力如何
  • 免费数据统计网站app推广拉新一手渠道
  • 网站推广效果不好原因zac seo博客
  • 高端网站设计合肥网站建设个人网站建设公
  • 廊坊建站模板系统做效果图的网站
  • 建网站打开需要验证四川省成都市建设厅官网
  • 网站文章列表如何排版珠海建设工程信息网站
  • 郑州个人做网站建设银行招聘网站
  • 杭州网站设计公司联系亿企邦网站怎么上百度
  • 网站建设的未来网站不备案访问
  • 网站改版效果图怎么做网站建设的五个基本要素
  • 河南建站网站做o2o网站需要多少钱
  • 重庆企业网站定制开发公司wordpress用户页
  • 电子商务网站seo网站规划与设计方向
  • 外贸双语网站源码wordpress 柚子
  • 隆昌市住房和城乡建设厅网站html5网页成品代码
  • 泉州丰泽建设局网站wordpress设置logo和公司名
  • 网页与网站设计实验总结网上商城互联网网站开发
  • 学院宣传网站建设简介郑州加盟网站建设
  • 上海网站建设sheji021wordpress ssl 图片
  • 网站管理人员队伍建设说明材料搞笑网站建设目的和意义
  • 网站建设应该考虑哪些问题如何规划网站栏目
  • 照片网站模版广告设计软件哪个好用