日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python电影推荐系统 github_GitHub - qingtang3009/MovieRecommend: 一个电影推荐系统

發布時間:2023/12/10 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python电影推荐系统 github_GitHub - qingtang3009/MovieRecommend: 一个电影推荐系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MovieRecommend

一個電影推薦系統(本科畢業設計)——實現用戶登錄、評分、推薦,采用協同過濾算法。🌸

作者序

我完成畢業設計的時間線可以參考README末尾的筆記,請注意筆記中所記載的內容和最后的實際成果有所出入,只做為本人完成畢業設計的過程記錄。

本畢設為2018年所做,和當前主流技術有所出入,大家可以利用深度學習算法來改進推薦結果。

系統流程

用戶注冊、登錄系統,對看過的電影進行評分,點擊提交評分按鈕,再點擊查看推薦按鈕即可看見推薦的電影列表。項目主頁以及推薦結果如下:

如何使用

1.首先將項目克隆到本地,用Pycharm打開movierecommend文件夾,并install項目依賴

2.將用到的csv文件導入mysql數據表中,詳見數據庫建表 ,配置好數據庫;注意數據庫相關代碼(settings.py、views.py)可能都要進行修改以符合實際情況;(本項目端口號為3307,用戶為root,密碼為admin,database為MovieData);

3.命令行執行:

python manage.py makemigrations

python manage.py migrate

python manage.py runserver

點擊http://127.0.0.1:8000/ 即可查看注冊登錄以及評分頁面。

注意登錄后點擊電影海報下面的星星對該電影評分,之后還要點擊左上角的“提交評分”按鈕才能將該評分數據存入mysql中,否則代碼會報錯。

項目依賴

1.Python3.6+django1.11 (python3.5亦可)

2.MySQL5.6

3.Jquery+CSS3+Html5

數據庫建表處理

1.在MySQL中創建一個database,取好名字,比如MovieData;

2.在該數據庫中創建moviegenre3和users_resulttable兩張表,建表命令行如下:

CREATE TABLE moviegenre3(imdbId INT NOT NULL PRIMARY KEY,title varchar(300),poster varchar(600));

CREATE TABLE users_resulttable(userId INT NOT NULL,imdbId INT,rating DECIMAL(3,1));

3.通過命令行或者navicat等工具將項目data文件夾下的兩張csv表分別導入上面創建好的兩張table中。由于moviegenre3.csv中的超鏈接較復雜,建議使用navicat工具導入;users_resulttable表可以使用下面命令行導入:

load data infile "E:/MovieRecommend/data/users_resulttable.csv" into table users_resulttable fields terminated by ',' lines terminated by '\n' (userId,imdbId,rating);

注意,此表沒有主鍵,增加主鍵操作為:

alter table users_resulttable add column id int auto_increment PRIMARY KEY;

問題

1.由于在views.py的查詢推薦結果的代碼中直接將查詢sql寫死為select * from users_resulttable WHERE userId = 1001,可能會報keyerror:1001的錯誤。如果報錯請檢查users_resulttable表的末尾是否存入了userId=1001的用戶評分記錄,如果沒有,很可能是用戶沒有點擊提交評分按鈕將數據插入數據表造成的。如果要進行第二個用戶的注冊和登錄推薦,要將sql改為userId=1002或者先將user表中所存用戶信息刪除。

2.如果通過命令行將csv導入數據庫表報錯‘The MySQL server is running with the --secure-file-priv option so it cannot execute this statement’,則是mysql版本問題,建議使用5.6版本。如果使用5.7版本出現此問題,修改mysql文件夾下的my.ini文件,增加secure_file_priv=語句,并且在service服務里面重啟mysql即可。

3.執行遷移時出現問題建議刪除遷移文件重新遷移。

4.如有其他問題可郵件致信我:mahappyending@gmail.com

筆記

2018年2月18日

寒假過的好快啊,前一陣子準備用flask,但是后面進一步了解之后決定用django+mysql+python完成這個推薦系統,現在就在懵懵懂懂的學django

2018/4/5

UserCF是給用戶推薦和他有共同興趣愛好的用戶喜歡的電影,ItemCF是給用戶推薦那些和他之前喜歡的電影類似的電影。

目前已經實現UserCF部分算法,模擬了用戶-電影矩陣數據,對已有用戶里的某一位用戶進行電影推薦。之后的工作就是要從csv中獲取數據。

看了《推薦系統實踐》這本書,后期可能用基于標簽,但是基于標簽算法涉及更多,每部電影都需要多個標簽,不能用movielens數據集。

2018/4/7

今天嘗試用了pycharm,之前一直用的sublime,但是文件管理的比較混亂。用pycharm的時候遇到坑了,我系統按安裝的是django1.11,

但是pycharm里面安裝的是最新版本2.0,導致項目文件自帶的代碼有錯誤。后來又卸了重新安裝,統一成了1.11.0版本。

接下來是mysql,項目遷移如下:

python manage.py makemigrations

這只是生成了遷移文件,還要執行遷移文件

python manage.py migrate

2018/4/8

進行一下流程梳理:

1.先啟動mysql:net start mysql;mysql -u root -p;

2. create database [數據庫名字];

3.pycharm直接創建一個django項目,然后進入這個項目下

4.在settings.py 中,數據庫代碼為:

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.mysql',

'NAME': '[數據庫名字]',

'PASSWORD': '[自己設置一個密碼]',

'HOST': '127.0.0.1',

'USER': 'root',

'PORT': '',

}

}

5.在_init_.py中: import pymysql; pymysql.install_as_MySQLdb()

6.models.py:加入模型類,屬性等。

7.生成遷移文件:python manage.py makemigrations;執行遷移:python manage.py migrate;

8.在mysql>中:use [數據庫名]; show tables;

在項目文件下,python manage.py runserver 瀏覽器中輸入127.0.0.1:8000

9.在templates下寫html文件,然后和views.py視圖文件、urls.py文件進行匹配

2018/4/10

今天搭建了django的虛擬開發環境,安裝了virtualenv,一定要保證整個項目都在虛擬環境中運行。 django1.11.1

關于html文件調用js、css等文件:首先在建的app目錄下建一個static文件,分支如下

├─migrations

│ └─__pycache__

├─static

│ ├─css

│ ├─img

│ └─js

└─__pycache__

注意migrations和static文件同級。html文件開頭要加上 {% load staticfiles %},引入css的語句為:

python

如果純粹像寫前端那樣調用css、js是不能成功的。

輸入'http://127.0.0.1:8000/users/login/', 返回用戶登錄界面

點擊登錄后進入推薦系統首頁(目前的首頁只有一個電影分類頁面,之后應增加分頁,以及實現用戶對電影評分,數據庫記錄用戶對電影的評分)

2018/4/12

今天找到了另一個csv文件,里面含有電影海報的鏈接,這樣可以直接用Js動態獲取鏈接然后加載圖片;

還有由于有很多個csv文件,每個文件包含的內容都不一樣,所以要將各個文件合并。準備直接用mysql的多表查詢。花了很久才成功把csv導入進mysql表中的ratings.

2018/4/13

注意result表里面要存電影的名字,而名字里面很多不確定的特殊符號,比如有逗號,冒號等。所以不能加enclosed by '"'這句,否則csv導進mysql表時會中斷。

4/14

今天做的很少,主要都去看深度學習視頻了,為以后的研究生項目掃盲。

主要還是csv和Mysql的問題,不知道要怎么去遍歷里面的數據。之前是自己模擬的幾個用戶對電影進行評分,用的是列表類型,我就想能不能讀取csv然后轉為列表再操作。

4/20

由于之前創建表時,不小心將rating設為了int型,所以今天重新建了一張表改為DECIMAL,名為resultTable。而且增加了主鍵:id。

‘alter table resultTable add column id int auto_increment PRIMARY KEY;’是給表增加一列并設為自增主鍵。

現在前端頁面已經可以獲取圖片的imdbId號和評分,接下來就是獲取當前用戶的名字,給他分一個從669開始的userId號。然后插入imdbId號和rating,調用算法進行分析。

4/25

今天實現了可以從前端頁面獲取評分的電影的rating和imdbId號并存入users_resulttable中,還要解決的是給登錄用戶自動分配一個userId號,與他的評分相對應。

之后要實現算法從數據庫中獲取數據得出推薦結果。現在沒有存title,后面得出推薦結果了就通過查詢imdbId號得到海報和title。

還實現了index.html顯示用戶登錄信息。

重新根據model生產數據表要將所有的遷移文件都刪除才能生成成功。

4/26

實現了給每個用戶分配一個id,其實是在原有的user.id基礎上加1000.

然后將算法導入pycharm,并且實現了可以將mysql數據表導出為csv文件。

現在的Mysql表是user_resulttable,同csv文件,csv文件導出到static下。明天的任務是通過按鈕將其連貫起來。

4/27

poster2從moviegenre7.txt導入。

對users_resulttable的處理:

alter table users_resulttable drop column id;

load data local infile "e:/Moviedatabase/rrtotaltable.csv" into table users_resulttable fields terminated by ',' lines terminated by '\n' (userId,imdbId,rating);

alter table users_resulttable add column id int auto_increment PRIMARY KEY;

費勁周折終于實現了從數據庫里獲取海報鏈接并且顯示在html上。

但是,還沒有實現從recommend函數得到的imdbId中查詢到poster再顯示。可能要將imdbId存到數組里再循環查詢。

而且還有個問題,就是現在頁面一刷新數據庫里就會出現重復的值。

4/28

有個最大的問題,現在imdbId和poster對應的表不完整,很多推薦出來的ImdbId號找不到電影海報。

必須要解決這個問題,而且最好增加title。現已解決select查詢語句遍歷recommend函數輸出的數組。

4/29

到今天為止,畢設基本已經完成。且增加了用戶注銷按鈕。

但有幾點不足:

1.推薦頁面的排版樣式未設計 2.運行速度有點慢 3.只用了一種推薦算法 4.每次刷新都在重新生成推薦列表,應該去除這種效果,刷新不應該變動。

4/30

提高了一點運行速度。

5/2

今天寫完了ItemCF,但其實性能比UserCF差。因為電影數據集的電影數量比用戶多太多。

5/7

今天登入數據庫出現了問題,一直登不進去。后面重新建了數據庫,重設置了密碼。

數據庫端口號由3306改為3307,要刪除遷移文件重新執行遷移。

CREATE TABLE moviegenre3(imdbId INT NOT NULL PRIMARY KEY,title varchar(300),poster varchar(600));

然后通過navicat將moviegenre3.csv自動導入。

總結

以上是生活随笔為你收集整理的python电影推荐系统 github_GitHub - qingtang3009/MovieRecommend: 一个电影推荐系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。