小編給大家分享一下python協(xié)同過(guò)濾程序的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比郊區(qū)網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式郊區(qū)網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋郊區(qū)地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。具體介紹如下。
關(guān)于協(xié)同過(guò)濾的一個(gè)最經(jīng)典的例子就是看電影,有時(shí)候不知道哪一部電影是我們喜歡的或者評(píng)分比較高的,那么通常的做法就是問(wèn)問(wèn)周圍的朋友,看看最近有什么好的電影推薦。在問(wèn)的時(shí)候,都習(xí)慣于問(wèn)跟自己口味差不多的朋友,這就是協(xié)同過(guò)濾的核心思想。
這個(gè)程序完全是為了應(yīng)付大數(shù)據(jù)分析與計(jì)算的課程作業(yè)所寫(xiě)的一個(gè)小程序,先上程序,一共55行。不在意細(xì)節(jié)的話,55行的程序已經(jīng)表現(xiàn)出了協(xié)同過(guò)濾的特性了。就是對(duì)每一個(gè)用戶找4個(gè)最接近的用戶,然后進(jìn)行推薦,在選擇推薦的時(shí)候是直接做的在4個(gè)用戶中選擇該用戶item沒(méi)包括的,當(dāng)然這里沒(méi)限制推薦數(shù)量,個(gè)人覺(jué)得如果要提高推薦準(zhǔn)確率的畫(huà),起碼,1,要對(duì)流行的item進(jìn)行處理。2,將相鄰的四個(gè)用戶的item進(jìn)行排序,從多到少的進(jìn)行推薦。程序所用的數(shù)據(jù)是movielens上的(http://grouplens.org/datasets/movielens)。相似度的計(jì)算也很簡(jiǎn)單,直接用了交集和差集的比值。好吧,上程序
#coding utf-8 import os import sys import re f1=open("/home/alber/data_base/bigdata/movielens_train_result.txt",'r') #讀取train文件,已經(jīng)處理成每一行代表一位用戶的item,項(xiàng)之間用空格。 f2=open("/home/alber/data_base/bigdata/movielens_train_result3.txt",'a') txt=f1.readlines() contxt=[] f1.close() userdic={} for line in txt: line_clean=" ".join(line.split()) position=line_clean.index(",") ID=line_clean[0:position] item=line_clean[position+1:] userdic.setdefault(ID,item) if len(item)>=5: #對(duì)觀影量少于5的用戶不計(jì)入相似性計(jì)算的范圍 contxt.append(item) for key in userdic.keys(): #計(jì)算每位用戶的4個(gè)最相似用戶 ID_num=key value=userdic[key] user_item=value.split(' ') Sim_user=[] for lines in contxt: lines_clean=lines.split(' ') intersection=list(set(lines_clean).intersection(set(user_item))) lenth_intersection=len(intersection) difference=list(set(lines_clean).difference(set(user_item))) lenth_difference=len(difference) if lenth_difference!=0: Similarity=float(lenth_intersection)/lenth_difference #交集除以差集作為相似性的判斷條件 Sim_user.append(Similarity) else: Sim_user.append("0") Sim_user_copy=Sim_user[:] Sim_user_copy.sort() Sim_best=Sim_user_copy[-4:] position1=Sim_user.index(Sim_best[3]) position2=Sim_user.index(Sim_best[2]) position3=Sim_user.index(Sim_best[1]) position4=Sim_user.index(Sim_best[0]) if position1!=0 and position2!=0 and position3!=0 and position4!=0: recommender=userdic[str(position1)]+" "+userdic[str(position2)]+" "+userdic[str(position3)]+" "+userdic[str(position4)] #將4位用戶的看過(guò)的電影作為推薦 else: recommender="none" reco_list=recommender.split(' ') recomm=[] for good in reco_list: if good not in user_item: recomm.append(good) else: pass f2.write((" ".join(recomm)+"\n")) f2.close()
以上是“python協(xié)同過(guò)濾程序的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
分享標(biāo)題:python協(xié)同過(guò)濾程序的示例分析-創(chuàng)新互聯(lián)
文章地址:http://jinyejixie.com/article6/pejig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、Google、微信小程序、云服務(wù)器、手機(jī)網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容