1. 程式人生 > >Python推薦演算法案例(3)——基於協同推薦的電影推薦

Python推薦演算法案例(3)——基於協同推薦的電影推薦

    上一節是根據物品item的描述屬性進行基於內容的推薦基於內容的電影推薦,本節中還是以電影推薦為例,講解基於內容的協同推薦演算法。


    python程式碼如下

import pandas as pd
useritemdata=pd.read_csv('C:/Users/Ray/Desktop/recommand/ml01/ratings.csv')
useritemdata.head()


itemlist=list(set(useritemdata['movieId'].tolist()))
# print(itemlist)
usercount=len(set(useritemdata['userId'].tolist()))
print(usercount)
5
itemAffinity=pd.DataFrame(columns=('item1','item2','score'))
rowcount=0
for ind1 in range(len(itemlist)):
    item1users=useritemdata[useritemdata.movieId==itemlist[ind1]]['userId'].tolist()
#     print(itemlist[ind1],item1users)
    for ind2 in range(ind1,len(itemlist)):
        if (ind1==ind2):
            continue
        item2users=useritemdata[useritemdata.movieId==itemlist[ind2]]['userId'].tolist()
#         print(itemlist[ind2],item2users)
        commentusers=len(set(item1users).intersection(set(item2users)))
        score=commentusers/usercount
        itemAffinity.loc[rowcount]=[itemlist[ind1],itemlist[ind2],score]
        rowcount+=1
        itemAffinity.loc[rowcount]=[itemlist[ind2],itemlist[ind1],score]
        rowcount+=1
itemAffinity.head()
def getrecommendation(searchitem):
    recolist=itemAffinity[itemAffinity.item1==searchitem][['item2','score']].sort_values('score',ascending=[0])
    return recolist
searchitem=5001
recolist=getrecommendation(searchitem)
print('recommendations for movieid'+str(searchitem)+'\n',recolist.head(5))

相關推薦

Python推薦演算法案例3——基於協同推薦電影推薦

    上一節是根據物品item的描述屬性進行基於內容的推薦基於內容的電影推薦,本節中還是以電影推薦為例,講解基於內容的協同推薦演算法。    python程式碼如下import pandas as pd useritemdata=pd.read_csv('C:/Users/

python常用演算法學習3

1,什麼是演算法的時間和空間複雜度   演算法(Algorithm)是指用來操作資料,解決程式問題的一組方法,對於同一個問題,使用不同的演算法,也許最終得到的結果是一樣的,但是在過程中消耗的資源和時間卻會有很大的區別。   那麼我們應該如何去衡量不同演算法之間的優劣呢?   主要還是從演算法所佔用的時間和空間

推薦系統基於協同過濾演算法開發離線推薦

什麼是離線推薦 所謂的離線推薦其實就是根據使用者產生的行為日誌,後臺設定一個離線統計演算法和離線推薦演算法的任務來對這些行為日誌進行週期性的統計,統計過後的結果資料為前臺或者實時分析提供資料的支撐。離線推薦要求實時性不高。 離線推薦演算法之協同過濾 協同過濾其實就是藉助大量已

基於大資料的推薦演算法研究1

孫遠帥. 基於大資料的推薦演算法研究[D]. 廈門大學, 2014. 讀的一篇論文的總結 總覽 基於專案層次結構的推薦演算法,並結合Hadoop技術實現矩陣分解演算法。 改進均衡相似度的餘弦距離和皮爾遜相關係數的計算公式,避免計算目標使用者與所有使

PYTHON設計模式學習3:Singleton pattern

blog ora 參考 擁有 沒有 _屬性 ces cti ttr 參考了其他的博客:http://ghostfromheaven.iteye.com/blog/1562618 #-*- encoding=utf-8 -*- print ‘--------------

Python學習之路3——Python安裝以及環境變量的操作

all 頭部 http plain 雙擊 load 編譯 源碼 borde 安裝Python windows: 1 2 3 4 5 6 7 1、下載安裝包 https://www.python.org/downloads/ 2、安裝

python與zmq系列3

本篇部落格將介紹zmq應答模式,所謂應答模式,就是一問一答,規則有這麼幾條         1、 必須先提問,後回答         2、 對於一個提問,只能回答一次

python機器學習入門3——裝飾器和元類

記住這幾句話: 萬物皆物件 裝飾器(decorator):函式亦物件 元類(meta class):類亦物件 物件意味著可以被賦值給變數,通過變數也能呼叫此物件   兩個簡單的程式: 裝飾器例程:實現對函式func的計時   元類例程: 實

python :collections模組3Counter模組以及deque模組

#Counter模組 統計型別類,定義跟蹤值出現的次數 引數為必須為可迭代物件,如列表,字串,集合 #統計集合中元素出現的次數 from collections import Counter #統計類 users ={"body_1","body_3","bod

讓你的python程式碼更優雅pythonic—— 基於PEP8

  寫出優雅的程式碼,自己除錯bug更加容易,也便於別人檢視,下面談談一下讓程式碼更加優雅的寫法,主要是基於 PEP8。     1,縮排與換行,每級縮排使用4個空格。 # yes: # 續行與其包裹元素要對齊 foo = long_function_name(var_one

python分散式事務方案基於訊息最終一致性

python分散式事務方案(二)基於訊息最終一致性 上一章採用的是tcc方案,但是在進行批量操作時,比如說幾百臺主機一起分配策略時,會執行很長時間,這時體驗比較差。 由於zabbix隱藏域後臺,而這個慢主要是集中在呼叫zabbix介面,這裡我們就基於訊息最終一致性來進行優化 訊息一致性方案是通過

python數字影象處理3:影象畫素的訪問與裁剪

圖片讀入程式中後,是以numpy陣列存在的。因此對numpy陣列的一切功能,對圖片也適用。對陣列元素的訪問,實際上就是對圖片畫素點的訪問。 彩色圖片訪問方式為: img[i,j,c] i表示圖片的行數,j表示圖片的列數,c表示圖片的通道數(RGB三通道分別對應0,1

RSA演算法原理——3RSA加解密過程及公式論證

個人分類: 演算法 上期(RSA簡介及基礎數論知識)為大家介紹了:互質、尤拉函式、尤拉定理、模反元素 這四個數論的知識點,而這四個知識點是理解RSA加密演算法的基石,忘了的同學可以快速的回顧一遍。 三、RSA加解密過程及公式論證 今天的內容主要分為三

極簡多檢視幾何3基於基本矩陣計算攝像機矩陣

MVG: p256 假設F為基本矩陣,S為任意反對稱矩陣,則可以將一對攝像機矩陣定義為: 其中e’為極點, 因為只有在如下條件滿足時,P’的秩為3, 因此S可以表示為極點的反對稱矩陣的形式 進而得到如下求解公式:

Python--Django開發速成3

        本文主要講解在的Python--Django開發速成(2)基礎上新增部落格文章修改功能,主要思路如下: (1)每個部落格都是有id的,id是由資料庫自動生成的,而id有一個特點,就是沒有0值。 (2)若要修改已有的文章,那麼可以讀取其id,從而後取其他內容

敏捷測試3--基於story的敏捷基礎知識

基於story的敏捷基礎知識----story編寫 為什麼使用Story? 軟體行業40年多來,需求分析技術已經很成熟了,但是MRD驅動的過程不堪重負。因為往往MRD編寫會佔去很多時間,MRD評審又會佔去大量時間,編碼完成過後提測,壓力又全部傾注在QA身上,往往臨計劃上線時

Python初學者好玩案例:最短的抓取網頁圖片程式碼,只有10行

這幾天閒來無事,又研究了一下Python的基礎內容,首先研究的是如何抓取網頁資料。 發現大神們通常在初級教程裡就要寫很多程式碼,真讓我們這些初學者無所適從。 加上Python的各種版本不同,也會讓初學者頭腦,在此提醒初學者,看資料一定要注意軟體版本號。 還是按照我的原則,凡

演算法介紹3 編輯距離演算法-字串相似度

           編輯距離,又稱Levenshtein距離,是指兩個字串之間,由一個轉成另一個所需的最少編輯操作次數。        具體的操作方法為:     

Python:Pandas:DataFrame基礎3

接著上一篇文章,我們介紹使用iloc方法讀取資料框的操作 1、提取第四行資料 print(data.iloc[3]) 輸出結果如下: 2、返回4-5行,1-2列資料 print(data.iloc[3:5, 0:2]) #注意:區間仍然

Machine Learning第九講【推薦系統】--基於內容的推薦系統

符號介紹: 對於每一個使用者j,假設我們已經通過學習找到引數,則使用者j對電影i的評分預測值為:。   對於上面的例子: