第一问

package org.lenskit.mooc.nonpers.Imp;/*calculate the highest average rating*/import org.lenskit.mooc.nonpers.Util.MapSortByValue;
import org.lenskit.mooc.nonpers.Util.Rating;
import java.io.File;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.*;public class HighestAvgRating {public static void main(String[] args) throws Exception {ArrayList userId = new ArrayList();ArrayList movieId = new ArrayList();ArrayList rating = new ArrayList();File file = new File("data/ratings.csv");List<String> lines = Files.readAllLines(file.toPath(),StandardCharsets.UTF_8);for (String line : lines) {String[] array = line.split(",");userId.add(array[0]);movieId.add(array[1]);rating.add(array[2]);}userId.remove(0);movieId.remove(0);rating.remove(0);int count = 1;Double avg = null;List<Rating> list = new ArrayList<Rating>();HashMap<Long, Double> mean = new HashMap<>();for (int i = 0; i < userId.size(); i++) {list.add(new Rating(Long.parseLong(movieId.get(i).toString()),Double.parseDouble(rating.get(i).toString())));}for (int i = 0; i < list.size(); i++) {count = 1;Long tmp = list.get(i).getMovieid();Double k = list.get(i).getRatings();for (int j = i + 1; j < list.size(); j++) {if (tmp.equals(list.get(j).getMovieid())) {count++;k += list.get(j).getRatings();list.remove(list.get(j));j--;}}avg = k / count;mean.put(list.get(i).getMovieid(), avg);}for (Long key : MapSortByValue.sortByValue(mean).keySet()) {System.out.print(key + "-" + MapSortByValue.sortByValue(mean).get(key) + "\n");}}
}

Utils:

package org.lenskit.mooc.nonpers.Util;import java.util.*;public class MapSortByValue {//对map集合进行降序排序public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map) {List<Map.Entry<K, V>> list = new LinkedList<Map.Entry<K, V>>(map.entrySet());Collections.sort(list, new Comparator<Map.Entry<K, V>>(){@Overridepublic int compare(Map.Entry<K, V> o1, Map.Entry<K, V> o2){int compare = (o1.getValue()).compareTo(o2.getValue());return -compare;}});Map<K, V> result = new LinkedHashMap<K, V>();for (Map.Entry<K, V> entry : list) {result.put(entry.getKey(), entry.getValue());}return result;}
}
package org.lenskit.mooc.nonpers.Util;public class Rating {private Long movieid;private Double ratings;public Rating(){}public Rating(Long movieid,Double ratings){this.movieid = movieid;this.ratings = ratings;}public Long getMovieid() {return movieid;}public void setMovieid(Long movieid) {this.movieid = movieid;}public Double getRatings() {return ratings;}public void setRatings(Double ratings) {this.ratings = ratings;}
}

最终部分输出:

第二问

package org.lenskit.mooc.nonpers.Imp;import org.lenskit.mooc.nonpers.Util.MapSortByValue;
import org.lenskit.mooc.nonpers.Util.Rating;import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class DampedMeanRating {//set damping factor =5private  static  final double DAMPINGFACTOR = 5.0;public static <Dobule> void main(String[] args) throws Exception {ArrayList userId = new ArrayList();ArrayList movieId = new ArrayList();ArrayList rating = new ArrayList();File file = new File("data/ratings.csv");List<String> lines = Files.readAllLines(file.toPath(),StandardCharsets.UTF_8);for (String line : lines) {String[] array = line.split(",");userId.add(array[0]);movieId.add(array[1]);rating.add(array[2]);}userId.remove(0);movieId.remove(0);rating.remove(0);int count = 0;Double sum = 0.0;List<Rating> list = new ArrayList<>();HashMap<Long, Double> mean = new HashMap<>();for (int i = 0; i < userId.size(); i++) {list.add(new Rating(Long.parseLong(movieId.get(i).toString()),Double.parseDouble(rating.get(i).toString())));}for (int i = 0; i < list.size(); i++) {count++;sum += Double.parseDouble(list.get(i).getRatings().toString());}//calculate global meanDouble global_avg = sum/count;DampedAvgRating(global_avg, DAMPINGFACTOR);}//calculate damped meanpublic static Map DampedAvgRating(Double global_avg, Double DAMPINGFACTOR) throws IOException {ArrayList userId = new ArrayList();ArrayList movieId = new ArrayList();ArrayList rating = new ArrayList();File file = new File("data/ratings.csv");List<String> lines = Files.readAllLines(file.toPath(),StandardCharsets.UTF_8);for (String line : lines) {String[] array = line.split(",");userId.add(array[0]);movieId.add(array[1]);rating.add(array[2]);}userId.remove(0);movieId.remove(0);rating.remove(0);int count = 1;Double avg = null;List<Rating> list = new ArrayList<Rating>();HashMap<Long, Double> mean = new HashMap<>();for (int i = 0; i < userId.size(); i++) {list.add(new Rating(Long.parseLong(movieId.get(i).toString()),Double.parseDouble(rating.get(i).toString())));}for (int i = 0; i < list.size(); i++) {count = 1;Long tmp = list.get(i).getMovieid();Double k = list.get(i).getRatings();for (int j = i + 1; j < list.size(); j++) {if (tmp.equals(list.get(j).getMovieid())) {count++;k += list.get(j).getRatings();list.remove(list.get(j));//remove一个元素时,要把遍历的指针减一j--;}}avg = (k+(DAMPINGFACTOR*global_avg)) / (count+DAMPINGFACTOR);mean.put(list.get(i).getMovieid(), avg);}for (Long key : MapSortByValue.sortByValue(mean).keySet()) {System.out.print(key + "-" + MapSortByValue.sortByValue(mean).get(key) + "\n");}return  mean;}}

部分output

Cousera Recommender System专项课程 Assignment2相关推荐

  1. 吴恩达Deeplearning.ai国庆节上新:生成对抗网络(GAN)专项课程

    机器之心报道 作者:蛋酱 Coursera 刚刚上新了 GAN 的专项课程,或许在这个国庆假期,你应该学习一波了. 生成对抗网络(Generative Adversarial Network,GAN) ...

  2. 干货 | 吴恩达亲自为这份深度学习专项课程精炼图笔记点了赞!(附下载)

    来源:机器之心.AI有道 本文约7500字,建议阅读10+分钟. 本文整理了深度学习基础.卷积网络和循环网络的学习笔记,附下载哦~ [ 导读 ]吴恩达在推特上展示了一份由 TessFerrandez ...

  3. 【论文阅读】A social recommender system using item asymmetric correlation

    Abstract 推荐系统在近几年极大突出的信息筛选技术之一,然而,有两个主要的问题: 数据稀疏:数据太稀疏了,没办法操作 冷开始:一开始数据不多(或者),推荐效果不好或无法进行 有一类系统,叫做社会 ...

  4. 独家干货 | 吴恩达深度学习专项课程精炼笔记!

    点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 吴恩达在他自己创办的在线教育平台 Coursera 上线了他的人工智能专项课程(Deep Le ...

  5. 【干货】吴恩达deeplearning.ai专项课程历史文章汇总

    AI有道 一个有情怀的公众号 本文列出了吴恩达deeplearning.ai专项课程的所有精炼笔记,均是红色石头精心制作的原创内容.主要包括:<神经网络与深度学习>.<优化神经网络& ...

  6. gan 总结 数据增强_吴恩达Deeplearning.ai国庆上新:GAN专项课程

    Coursera 刚刚上新了 GAN 的专项课程,或许在这个国庆假期,你应该学习一波了. 作者:蛋酱 生成对抗网络(Generative Adversarial Network,GAN)是当前功能最强 ...

  7. 【人工智能】深度学习专项课程精炼图笔记!必备收藏

    本文为人工智能学习笔记记录 ,参考机器之心,AI有道,Google资源 目录 深度学习基础 1. 深度学习基本概念 2. logistic 回归 3. 浅层网络的特点 4. 深度神经网络的特点 5. ...

  8. CS230+deeplearning.ai专项课程笔记及作业目录

    随着lecture10的结束,标志着CS230到Coursera上deeplearning.ai专项课程的所有编程作业的完成,中途虽然进度比较慢,也曾遇到很多困难,但是收获满满,也找到了自己比较感兴趣 ...

  9. 深度学习专项课程精炼图笔记!必备收藏 | 原力计划

    作者 | DL&CV_study9 责编 | Elle 出品 | CSDN 博客 本文为人工智能学习笔记记录. 深度学习基础 深度学习基本概念 监督学习:所有输入数据都有确定的对应输出数据,在 ...

最新文章

  1. js中修改this的指向方法整理
  2. 机器学习物语(3):回归问题
  3. 如何使用HTML5创建在线精美简历
  4. python 归纳 (四)_运算符重载
  5. scipy.stats.norm
  6. Java程序莫名其妙卡死的一次经历
  7. ES6进阶Async与Await,你不知道的同步与异步
  8. 计算理论101:这可能是讲FSM的最生动的一篇了
  9. 《21天学通Java(第7版)》—— 导读
  10. DW集训营数据库Mysql梳理[五]
  11. NVIDIA显卡驱动的重装
  12. Debezium-Flink-Hudi:实时流式CDC
  13. 淘咖啡:阿里无人咖啡馆效果图
  14. LaTeX调整页眉宽度适应文本
  15. 七日之都账号服务器,永远的7日之都开服时间一览表 7日之都最新服务器开服时间一览...
  16. 最新阿里云短信服务接口类【亲测成功】
  17. DAGAGUARD追加归档方式迁移到rac集群
  18. linux usb gadget 日志
  19. 寒假学习计划统筹以及考研展望
  20. 一文带你重新审视CAP理论与分布式系统设计

热门文章

  1. asm 多工 控制文件
  2. 在vscode中查看当前项目的工作环境
  3. RT-Thread学习笔记(9):邮箱
  4. 海康、大华等网络摄像头RTSP_Onvif网页无插件直播流媒体服务器EasyNVR鉴权出现跨域问题的解决方法
  5. 计算机初操作员培训大纲,计算机初级培训大纲.doc
  6. 基于循环神经网络的格兰杰因果网络重构
  7. HE网站系统架设过程思路
  8. 7-2 然后是几点 (15 分)
  9. 有关FLASH的一些基础操作
  10. Deblur-NeRF CVPR 2022