91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 3KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-06-02
  • 語(yǔ)言: Python
  • 標(biāo)簽: UserCF??

資源簡(jiǎn)介

這是關(guān)于基于用戶協(xié)同過(guò)濾usercf的python代碼實(shí)現(xiàn),初學(xué)涉及到這方面的朋友可以下載試試,數(shù)據(jù)時(shí)基于movielen上面的,可以自己去官網(wǎng)下載。

資源截圖

代碼片段和文件信息

#!/usr/bin/python3
#?-*-?coding:?utf-8?-*-
from?numpy?import?*
import?time
from?texttable?import?Texttable
import?math


class?CF:
????def?__init__(self?movies?ratings?k=5?n=10):
????????self.movies?=?movies
????????self.ratings?=?ratings
????????#?鄰居個(gè)數(shù)
????????self.k?=?k
????????#?推薦個(gè)數(shù)
????????self.n?=?n
????????#?用戶對(duì)電影的評(píng)分
????????#?數(shù)據(jù)格式{‘UserID:用戶ID‘:[(MovieID:電影IDRating:用戶對(duì)電影的評(píng)星)]}
????????self.userDict?=?{}
????????#?對(duì)某電影評(píng)分的用戶
????????#?數(shù)據(jù)格式:{‘MovieID:電影ID‘[UserID:用戶ID]}
????????#?{‘1‘[123..]...}
????????self.ItemUser?=?{}
????????#?鄰居的信息
????????self.neighbors?=?[]
????????#?推薦列表
????????self.recommandList?=?[]
????????self.cost?=?0.0
????????#存儲(chǔ)
????????self.c?={}
????????self.Item_User?=?{}

????#?基于用戶的推薦
????#?根據(jù)對(duì)電影的評(píng)分計(jì)算用戶之間的相似度
????def?recommendByUser(self?userId):
????????self.formatRate()
????????#?推薦個(gè)數(shù)?等于?本身評(píng)分電影個(gè)數(shù),用戶計(jì)算準(zhǔn)確率
????????self.n?=?len(self.userDict[userId])
????????self.getNearestNeighbor(userId)
????????self.getrecommandList(userId)
????????self.getPrecision(userId)

????#?第五步:獲取推薦列表
????def?getrecommandList(self?userId):
????????#?recommandList?=?[[neighbor?movieID]]
????????self.recommandList?=?[]
????????#?建立推薦字典
????????#?self.neighbors?=?[[dist?i(表示neighbors)]]
????????#?recommandDict?=?{movieID:[neighbor]}
????????recommandDict?=?{}
????????for?neighbor?in?self.neighbors:
????????????#movies?=?[movieIDRating]
????????????movies?=?self.userDict[neighbor[1]]
????????????for?movie?in?movies:
????????????????if?(movie[0]?in?recommandDict):
????????????????????recommandDict[movie[0]]?+=?neighbor[0]
????????????????else:
????????????????????recommandDict[movie[0]]?=?neighbor[0]

????????#?建立推薦列表
????????for?key?in?recommandDict:
????????????self.recommandList.append([recommandDict[key]?key])
????????self.recommandList.sort(reverse=True)
????????#?取出降序后列表前n個(gè)推薦電影數(shù)的列表
????????self.recommandList?=?self.recommandList[:self.n]

????#?第一步:將ratings轉(zhuǎn)換為userDict和ItemUser
????def?formatRate(self):
????????#?userDict?用戶對(duì)電影的評(píng)分
????????#?數(shù)據(jù)格式{‘UserID:用戶ID‘:[(MovieID:電影IDRating:用戶對(duì)電影的評(píng)星)]}
????????self.userDict?=?{}
????????#?ItemUser?對(duì)某電影評(píng)分的用戶
????????#?數(shù)據(jù)格式:{‘MovieID:電影ID‘[UserID:用戶ID]}
????????#?{‘1‘[123..]...}
????????self.ItemUser?=?{}
????????for?i?in?self.ratings:
????????????#?評(píng)分最高為5?除以5?進(jìn)行數(shù)據(jù)歸一化
????????????temp?=?(i[1]?float(i[2])?/?5)
????????????#?計(jì)算userDict?{‘1‘:[(15)(25)...]‘2‘:[...]...}
????????????if?(i[0]?in?self.userDict):
????????????????self.userDict[i[0]].append(temp)
????????????else:
????????????????self.userDict[i[0]]?=?[temp]
????????????#?計(jì)算ItemUser?{‘1‘[123..]...}
????????????if?(i[1]?in?self.ItemUser):
????????????????self.ItemUser[i[1]].append(i[0])
????????????else:
????????????????self.ItemUser[i[1]]?=?[i[0]]

????#?第二步:找到某用戶的相鄰用戶
????def?getNearestNeighbor(self?userId):
????????neighbors?=?[]
????????#self.neighbors?=?[[dist?i]]
????????self.neighbors?=?[]
????????#?獲取userId評(píng)分的電影都有那些用戶也

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-04-29?11:03??UserCF\
?????文件????????8959??2018-03-14?09:13??UserCF\UserCF3.py

評(píng)論

共有 條評(píng)論

相關(guān)資源