
正文
电影推荐系统java代码 电影推荐系统java代码
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
国内电影推荐系统有哪些
国内电影推荐系统有哪些
本文设计了一个个性化电影推荐系统。众所周知电影推荐系统java代码,现在电影资源是网络资源的重要组成部分电影推荐系统java代码,随着网络上电影资源的数量越来越庞大电影推荐系统java代码,设计电影个性化推荐系统迫在眉睫。所以本文旨在为每一个用户推荐与其兴趣爱好契合度较高的电影。
论文首先阐述推荐系统的研究现状以及意义,随后介绍了相关的推荐算法,重点介绍协同过滤算法,并对系统实现所需技术进行了研究,接着介绍了整个推荐系统的实现,最后对整个项目进行了回顾与总结。
本系统包含电影前端展示界面、电影评分板块、推荐算法的实现以及后端数据库的设计。其中实现推荐算法是整个电影推荐系统的核心。系统采用由grouplens项目组从美国著名电影网站movielens整理的ml-latest-small数据集,该数据集包含了671个用户对9000多部电影的10万条评分数据。首先将该数据集包含的全部文件经过筛选重组之后存储到建好的数据库中,并将数据集按一定比例划分为训练集和测试集,对训练集进行算法分析生成Top-N个性化电影推荐列表,然后在测试集上对算法进行评测,至少包括准确率和召回率两种评测指标。
协同过滤算法是推荐领域最出名也是应用最广泛的推荐算法。所以系统拟采用两种协同过滤算法给出两种不同的推荐结果,一种是基于用户的协同过滤算法,另一种是基于物品的协同过滤算法,用户可以根据两种推荐结果更加合理的选择合适的电影。系统采用了改进之后的ItemCF-IUF和UserCF-IIF算法,对计算用户相似度和物品相似度的计算都做出了改进。最后通过计算两种算法的准确率(Precision)、召回率(Recall)和流行度从而对系统进行评测、并比较了两种算法各自的优势和劣势。实验证明,改进后的算法比原始的协同过滤算法推荐效果要好,准确率更高。
整个系统涉及到的编程语言包含Python、Html5、JQuery、CSS3以及MySQL数据库编程。用到的框架是Django重量级web框架,通过该框架连接系统的前、后端。用户首先需要填写用户名、密码以及邮箱注册系统,然后才能登陆推荐系统。进入首页后会看到8个电影分类,包括恐怖片、动作片、剧情片等。用户需要给自己看过的电影进行评分,评分起止为0。5-5。0分,共10个分段。每评价一部电影就要点击一下提交按钮,将所评分的电影的imdbId号以及对应的评分存入数据库中。用户点击“推荐结果”按钮,系统就调用推荐算法遍历数据库所存数据,得出推荐列表之后将结果反馈给浏览器,同时调取数据库所存电影海报图片进行展示。用户点击自己登陆的昵称,会跳转页面显示自己已经评价过的电影。
本文还分析了系统的需求,并对需求进行相关设计,最后用Django框架实现了该系统,并给出了系统所用的主要数据表展示以及各个功能界面的展示。
相关问答
Q1: 用java写个简单的电影院座位预约,10个座位2行。前面的座位10000文,后面的20000文,
import java.util.Scanner;
/**
*
* @author 12052010
* @Date December 05,2014
*
*/
public class Film {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int [][] num = new int[2][10];
int fg1,fg2;//标志顾客选择 的座位fg1:排数 fg2:列数
for(int i=0;inum.length;i++){
for(int j=0;jnum[i].length;j++)
num[i][j]=0;//赋初值,所有座位没有被预定
}
randomBook(num);
System.out.print("\n-----------电影院座位订票情况(0:还没被预定 1: 已经被预定)------------");
for(int i=0;inum.length;i++){
System.out.println("");
for(int j=0;jnum[i].length;j++)
System.out.print(" "+num[i][j]);
}
/**
* 顾客输进的排数必须符合0 or 1
*/
do{
System.out.print("\nInput fg1: ");
fg1=input.nextInt();
} while(fg10||fg12);
/**
* 顾客输进的列数必须符合 0-9
*/
do{
System.out.print("Input fg2: ");
fg2=input.nextInt();
} while(fg20||fg29);
if(num[fg1][fg2]==1){
System.out.print("\n已经被人订了,不好意思");
}else{
System.out.print("\n你要订的座位是: "+ fg1+"排 "+ fg2+"列, 票价:");
if(fg1==1)
System.out.print("10000文");
else
System.out.print("20000文");
}
}
/**
* 随即设置电影院的座位被预定
*/
public static void randomBook(int[][] num){
for(int i=0;inum.length;i++){
for(int j=0;jnum[i].length;j++){
//随机设置
num[i][j]=(int)(Math.random()*2);
}
}
}
}
Q2: hadoop入门容易吗?
不是很容易,但是推荐一些Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括,YARN, Hcatalog, Oozie, Cassandra, Hama, Whirr, Flume, Bigtop, Crunch, Hue等。
一、学习路线图
Hadoop家族学习路线图 开篇必读
Hive学习路线图
Mahout学习路线图
二、编程实践
Hadoop历史版本安装
用Maven构建Hadoop项目
Hadoop编程调用HDFS
用Maven构建Mahout项目
Mahout推荐算法API详解
用MapReduce实现矩阵乘法
从源代码剖析Mahout推荐引擎
Mahout分步式程序开发 基于物品的协同过滤ItemCF
Mahout分步式程序开发 聚类Kmeans
PageRank算法并行实现
三、案例分析
海量Web日志分析 用Hadoop提取KPI统计指标
用Hadoop构建电影推荐系统
用Mahout构建职位推荐引擎
Mahout构建图书推荐系统
PeopleRank从社交网络中发现个体价值
Q3: 电影推荐系统是用java写还是paython写好一点?
我觉得用java好一些。
java是一门面向对象的编程语言。java语言具有功能强大和简单易用两个特征,具有简单性、面向对象、分布式等特点,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
Python目前的应用领域比较广泛,目前Python的主要方向分为后端开发、数据分析、网络爬虫、机器学习等。
Q4: 求JAVA视频播放器代码
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.FileDialog;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.media.ControllerClosedEvent;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.media.PrefetchCompleteEvent;
import javax.media.RealizeCompleteEvent;
import javax.media.Time;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
public class JMFMediaPlayer extends JFrame implements ActionListener,
ControllerListener, ItemListener {
// JMF的播放器
Player player;
// 播放器的视频组件和控制组件
Component vedioComponent;
Component controlComponent;
// 标示是否是第一次打开播放器
boolean first = true;
// 标示是否需要循环
boolean loop = false;
// 文件当前目录
String currentDirectory;
// 构造方法
public JMFMediaPlayer(String title) {
super(title);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
// 用户点击窗口系统菜单的关闭按钮
// 调用dispose以执行windowClosed
dispose();
}
public void windowClosed(WindowEvent e){
if (player != null){
// 关闭JMF播放器对象
player.close();
}
System.exit(0);
}
});
// 创建播放器的菜单
JMenu fileMenu = new JMenu("文件");
JMenuItem openMemuItem = new JMenuItem("打开");
openMemuItem.addActionListener(this);
fileMenu.add(openMemuItem);
// 添加一个分割条
fileMenu.addSeparator();
// 创建一个复选框菜单项
JCheckBoxMenuItem loopMenuItem = new JCheckBoxMenuItem("循环", false);
loopMenuItem.addItemListener(this);
fileMenu.add(loopMenuItem);
fileMenu.addSeparator();
JMenuItem exitMemuItem = new JMenuItem("退出");
exitMemuItem.addActionListener(this);
fileMenu.add(exitMemuItem);
JMenuBar menuBar = new JMenuBar();
menuBar.add(fileMenu);
this.setJMenuBar(menuBar);
this.setSize(200, 200);
try {
// 设置界面的外观,为系统外观
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
SwingUtilities.updateComponentTreeUI(this);
} catch (Exception e) {
e.printStackTrace();
}
this.setVisible(true);
}
/**
* 实现了ActionListener接口,处理组件的活动事件
*/
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("退出")) {
// 调用dispose以便执行windowClosed
dispose();
return;
}
FileDialog fileDialog = new FileDialog(this, "打开媒体文件", FileDialog.LOAD);
fileDialog.setDirectory(currentDirectory);
fileDialog.setVisible(true);
// 如果用户放弃选择文件,则返回
if (fileDialog.getFile() == null){
return;
}
currentDirectory = fileDialog.getDirectory();
if (player != null){
// 关闭已经存在JMF播放器对象
player.close();
}
try {
// 创建一个打开选择文件的播放器
player = Manager.createPlayer(new MediaLocator("file:"
+ fileDialog.getDirectory() + fileDialog.getFile()));
} catch (java.io.IOException e2) {
System.out.println(e2);
return;
} catch (NoPlayerException e2) {
System.out.println("不能找到播放器.");
return;
}
if (player == null) {
System.out.println("无法创建播放器.");
return;
}
first = false;
this.setTitle(fileDialog.getFile());
// 播放器的控制事件处理
player.addControllerListener(this);
// 预读文件内容
player.prefetch();
}
/**
* 实现ControllerListener接口的方法,处理播放器的控制事件
*/
public void controllerUpdate(ControllerEvent e) {
// 调用player.close()时ControllerClosedEvent事件出现。
// 如果存在视觉部件,则该部件应该拆除(为一致起见,
// 我们对控制面板部件也执行同样的操作)
if (e instanceof ControllerClosedEvent) {
if (vedioComponent != null) {
this.getContentPane().remove(vedioComponent);
this.vedioComponent = null;
}
if (controlComponent != null) {
this.getContentPane().remove(controlComponent);
this.controlComponent = null;
}
return;
}
// 如果是媒体文件到达尾部事件
if (e instanceof EndOfMediaEvent) {
if (loop) {
// 如果允许循环,则重新开始播放
player.setMediaTime(new Time(0));
player.start();
}
return;
}
// 如果是播放器预读事件
if (e instanceof PrefetchCompleteEvent) {
// 启动播放器
player.start();
return;
}
// 如果是文件打开完全事件,则显示视频组件和控制器组件
if (e instanceof RealizeCompleteEvent) {
vedioComponent = player.getVisualComponent();
if (vedioComponent != null){
this.getContentPane().add(vedioComponent);
}
controlComponent = player.getControlPanelComponent();
if (controlComponent != null){
this.getContentPane().add(controlComponent, BorderLayout.SOUTH);
}
this.pack();
}
}
// 处理“循环”复选框菜单项的点击事件
public void itemStateChanged(ItemEvent e) {
loop = !loop;
}
public static void main(String[] args){
new JMFMediaPlayer("JMF媒体播放器");
}
}
试试吧,我这里运行正常
关于电影推荐系统java代码和电影推荐系统java代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







