欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡單的python協(xié)同過濾程序?qū)嵗a

 更新時(shí)間:2018年01月31日 11:11:20   作者:葉落花開  
這篇文章主要介紹了簡單的python協(xié)同過濾程序,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下

本文研究的主要是python協(xié)同過濾程序的相關(guān)內(nèi)容,具體介紹如下。

關(guān)于協(xié)同過濾的一個(gè)最經(jīng)典的例子就是看電影,有時(shí)候不知道哪一部電影是我們喜歡的或者評(píng)分比較高的,那么通常的做法就是問問周圍的朋友,看看最近有什么好的電影推薦。在問的時(shí)候,都習(xí)慣于問跟自己口味差不多的朋友,這就是協(xié)同過濾的核心思想。

這個(gè)程序完全是為了應(yīng)付大數(shù)據(jù)分析與計(jì)算的課程作業(yè)所寫的一個(gè)小程序,先上程序,一共55行。不在意細(xì)節(jié)的話,55行的程序已經(jīng)表現(xiàn)出了協(xié)同過濾的特性了。就是對(duì)每一個(gè)用戶找4個(gè)最接近的用戶,然后進(jìn)行推薦,在選擇推薦的時(shí)候是直接做的在4個(gè)用戶中選擇該用戶item沒包括的,當(dāng)然這里沒限制推薦數(shù)量,個(gè)人覺得如果要提高推薦準(zhǔn)確率的畫,起碼,1,要對(duì)流行的item進(jìn)行處理。2,將相鄰的四個(gè)用戶的item進(jìn)行排序,從多到少的進(jìn)行推薦。程序所用的數(shù)據(jù)是movielens上的(http://grouplens.org/datasets/movielens)。相似度的計(jì)算也很簡單,直接用了交集和差集的比值。好吧,上程序

#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位用戶的看過的電影作為推薦 
  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()

總結(jié)

以上就是本文關(guān)于簡單的python協(xié)同過濾程序?qū)嵗a的全部內(nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • Python編程基礎(chǔ)之輸入與輸出

    Python編程基礎(chǔ)之輸入與輸出

    這篇文章主要為大家介紹了Python輸入與輸出,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • cython加速python代碼的方法實(shí)現(xiàn)

    cython加速python代碼的方法實(shí)現(xiàn)

    本文主要介紹了cython加速python代碼的方法實(shí)現(xiàn),特別是在涉及到數(shù)值計(jì)算密集型任務(wù)時(shí),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • python3.9實(shí)現(xiàn)pyinstaller打包python文件成exe

    python3.9實(shí)現(xiàn)pyinstaller打包python文件成exe

    這篇文章主要介紹了python3.9實(shí)現(xiàn)pyinstaller打包python文件成exe,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • python元組打包和解包過程詳解

    python元組打包和解包過程詳解

    在本篇文章里,我們給大家整理了關(guān)于python元組打包和解包過程的知識(shí)點(diǎn)內(nèi)容,有興趣點(diǎn)的朋友們可以跟著學(xué)習(xí)下。
    2021-08-08
  • Linux下Python安裝完成后使用pip命令的詳細(xì)教程

    Linux下Python安裝完成后使用pip命令的詳細(xì)教程

    這篇文章主要介紹了Linux下Python安裝完成后使用pip命令的詳細(xì)教程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • Python linecache.getline()讀取文件中特定一行的腳本

    Python linecache.getline()讀取文件中特定一行的腳本

    Python中使用標(biāo)準(zhǔn)庫中的linecache中的getline方法可以從某個(gè)文件中讀取出特定的一行。
    2008-09-09
  • Python實(shí)現(xiàn)按鍵精靈版的連點(diǎn)器

    Python實(shí)現(xiàn)按鍵精靈版的連點(diǎn)器

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)按鍵精靈版的連點(diǎn)器,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下
    2023-06-06
  • Python類的繼承與多態(tài)詳細(xì)介紹

    Python類的繼承與多態(tài)詳細(xì)介紹

    大家好,本篇文章主要講的是Python類的繼承與多態(tài)詳細(xì)介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Django使用redis緩存服務(wù)器的實(shí)現(xiàn)代碼示例

    Django使用redis緩存服務(wù)器的實(shí)現(xiàn)代碼示例

    這篇文章主要介紹了Django使用redis緩存服務(wù)器的實(shí)現(xiàn)代碼示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python命令行定時(shí)任務(wù)自動(dòng)化工作流程

    Python命令行定時(shí)任務(wù)自動(dòng)化工作流程

    本文介紹如何使用Python編寫定時(shí)任務(wù),以自動(dòng)執(zhí)行命令行任務(wù)。您將學(xué)習(xí)如何安排定期的任務(wù),處理任務(wù)結(jié)果,以及如何使用Python自動(dòng)化工作流程,從而提高工作效率。無需手動(dòng)執(zhí)行重復(fù)任務(wù),Python幫您搞定
    2023-04-04

最新評(píng)論