当前位置:   article > 正文

基于Python机器学习算法的电影推荐系统以及票房预测系统_电影票房预测算法

电影票房预测算法

电影数据分析
目录
电影数据分析 1
一、、实验概述 1
1.1 实验标 1
1.2 .实验完成情况 1
二、、电影特征的可视化分析 2
电影票房预测 9
2.1 Data Augmentation 9
2.1.1 算法说明 10
2.1.2 实验结果 13
电影推荐算法 15
3.1 基于统计学的推荐 15
3.1.1 score = v +v m r + mm+ v c 15
3.2 基于内容的推荐算法 15
3.3 基于 KNN 的协同过滤算法 17
3.3.1 针对电影相似度的推荐算法 17
3.3.2 针对户相似度的推荐算法 18
3.4 基于奇异值分解的推荐算法 19
3.5 集成推荐算法 22
3.5.1 KNN+ 本的集成推荐 22
3.5.2 户 KNN+ 电影 KNN 22
3.5.3 户 KNN+ 奇异值分解 22

一、、实验概述
1.1 实验标
本项目希望基于电影数据集,依据电影的简介、关键词、预算、票房、用户评分等特征来对电影进行分析,并完成以下任务:
对电影特征的可视化分析对电影票房的预测
多功能个性化的电影推荐算法
1.2 .实验完成情况

完成了对电影特征的可视化分析。


完成了基于电影特征的电影票房预测算法,并在 Kaggle 的 TMDB Box Office Prediction 比赛中最终取得


了前 6.8%(95/1400)的成绩。


完成了基于简单特征(内容、评分、关键词)的三种推荐算法、基于 KNN 的两种协同过滤算法、基于奇异值分解的推荐算法以及三种集成推荐算法,共设计并实现了九种电影推荐算法。

二、、电影特征的可视化分析
本项目中,我首先对电影数据的一些特征进行了可视化分析,来为之后的票房预测和电影推荐做帮助。
首先我分别绘制了票房与预算、欢迎程度(popularity)、戏剧性程度(theatrical)的关系图,如下图所示:

#-*-coding:utf-8-*-

import pandas as pd
import sys
import os
import csv
sys.path.insert(0, '..')
from personal_recommender.KNN_movie import Movie_KNN_recommender
from personal_recommender.KNN_user import Personal_KNN_recommender
from personal_recommender.Personal_SVD import Personal_SVD_recommender

# 首先用KNN对输入的用户进行相似度匹配,然后挑选出最接近的10个其他用户
# 之后对于选出的电影,根据SVD计算用户对电影的模拟评分来进行排序

class KNN_SVD_ensemble:
    def __init__(self):
        self.user = Personal_KNN_recommender()
        self.movie = Personal_SVD_recommender()
        self.testings = pd.read_csv('../data/personal/test.csv')
        self.userid = []
        for i in range(len(self.testings['userId'])):
            if not self.testings['userId'][i] in self.userid:
                self.userid.append(self.testings['userId'][i])


    def recommend(self, usrID):
        _, first_ids = self.user.recommend(usrID, 50)
        # print(first_ids)
        second_ids, movie_id = self.movie.recommend(usrID, first_ids, 10)
        # print(second_ids)
        return movie_id

    def test(self, num):
        result = []
        for user in self.userid:
            print(user)
            ids = self.recommend(user)
            print(ids)
            result.append(ids)

        with open("./result.csv", "w") as csvfile:
            writer = csv.writer(csvfile)
            writer.writerow(['userId', 'result'])
            for i, row in enumerate(result):
                writer.writerow([self.userid[i], row])


test = KNN_SVD_ensemble()
# test.recommend(2)
test.test(10)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/645983
推荐阅读
相关标签
  

闽ICP备14008679号