使用surprise框架為Movieslen資料集中的每個user推薦Top-N個item
#匯入相關的庫檔案
import os
from surprise import Dataset
from surprise import Reader
from surprise import SVD
from surprise import accuracy
from surprise.model_selection import train_test_split
from surprise import evaluate, print_perf
##讀取資料
#指定檔案的路徑
file_path = os.path.expanduser('ml-100k/u.data')
#告訴文字閱讀器,文字的格式是什麼樣子的
reader = Reader(line_format='user item rating timestamp', sep='\t')
#載入資料
data = Dataset.load_from_file(file_path, reader=reader)
# testset佔比25%.
#trainset, testset = train_test_split(data, test_size=.25)
trainset = data.build_full_trainset()
#這裡使用SVD演算法,也可以使用其他的演算法
algo = SVD()
# 在trainset上進行模型的訓練, 在testset進行預測
algo.fit(trainset)
#進行預測
testset = trainset.build_anti_testset() #這裡的testset是trainset中 rui為0的(user, item, 0)
predictions = algo.test(testset)
# Then compute RMSE
accuracy.rmse(predictions)
RMSE: 0.6043
0.6042835704959628
from collections import defaultdict #defaultdict是一個字典,當key不存在時,會返回預設值
#從一個prediction集合中返回每個 user Top-N推薦
def get_top_n(predictions, n = 10):
'''從一個prediction集合中返回每個 user Top-N推薦
Args:
predictions(list of Prediction objects): The list of predictions, as
returned by the test method of an algorithm.
n(int): The number of recommendation to output for each user. Default
is 10.
Returns:
A dict where keys are user (raw) ids and values are lists of tuples:
[(raw item id, rating estimation), ...] of size n.
'''
#首先將prediction對映到每個user上
top_n = defaultdict(list)
for uid, iid, true_r, est, _ in predictions:
top_n[uid].append((iid, est))
#再對每個user的item按照評分進行排序
for uid, user_ratings in top_n.items():
user_ratings.sort(key = lambda x : x[1], reverse = True)
top_n[uid] = user_ratings[:n] #取前n個
return top_n
get_top_n(predictions, n = 10)
#計算查準率 [email protected] and 和查全率 [email protected]
相關推薦
使用surprise框架為Movieslen資料集中的每個user推薦Top-N個item
#匯入相關的庫檔案 import os from surprise import Dataset from surprise import Reader from surprise import SVD from surprise import accuracy
[譯]使用 Python 的 Pandas 和 Seaborn 框架從 Kaggle 資料集中提取資訊
原文地址:EXTRACTING INSIGHTS FROM A KAGGLE DATASET USING PYTHON’S PANDAS AND SEABORN 原文作者:Strikingloo 譯文出自:掘金翻譯計劃 本文永久連結:github.com/xitu/gold-m
BI報表分析和資料視覺化,推薦這三個開源工具!
開源篇 一、Superset 1、技術架構:Python + Flask + React + Redux
以SpringMVC框架為中心瘋狂擴充套件-08、ActiveMQ收發Json格式的資料
1、匯入Gson依賴包 <!-- Gson --> <dependency> <groupId>com.google.code.gson</groupId
為引數表單下拉資料集中的空值新增中文描述
需求描述 潤乾的下拉資料集可以繫結資料庫資料,方便使用者選擇,避免手動輸入可能引起的誤差。 用下拉資料集來實現引數下拉表單,將查詢條件傳遞給結果報表進行計算。有時查詢條件可能不需要選擇或者保持為空值,這時可以使用下拉資料集中的允許空值選項,如下圖: 這時原有的下拉列表就變為 相比原來的選擇項多
自己動手寫javaEE框架-為jqgrid換換皮膚然後加到我的框架裏
就會 cts 客戶 換膚 解析json 狀態 src demo 導航 軟件151 蘇垚 今天讓我倒騰半天的居然不是寫我的javaEE框架,而是更換jqgrid的皮膚。我是相當的討厭jqgrid的默認皮膚,它總讓我想起一直想學而都沒學過的EXTJS,看多了那種淡藍色
python_如何為元組中每個元素命名
進行 port 數據 大量 程序 問題 什麽 log python 學生信息系統: (名字,年齡,性別,郵箱地址) 為了減少存儲開支,每個學生的信息都以一個元組形式存放 如: (‘tom‘, 18,‘male‘,[em
python學習--為元組中每個元素命名
設置 imp 編寫代碼 python學習 位置 spa python () 返回 官方文檔:namedtuple():命名元組函數賦予元組中每個位置的含義,並允許更具可讀性的自編寫代碼。它們可以在任何使用常規元組的地方使用,並且可以通過名稱而不是位置索引來添加字段。 實例:
快速開發框架為什麽得到越來越多企業的認同?
快速開發 快速開發平臺 快速開發框架 隨著企業信息化要求的不斷增加,快速開發框架以其迅速性,便捷性,以及良好的可拓展性得到了越來越多企業的認可。 在傳統的開發模式下,完成一個完整的項目一般需要高級架構員+專業美工人員+數據調優人員+軟件工程師;而采用快速開發框架便只需要少量的軟件
為影像資料去除無效值
在使用柵格資料時,黑邊和白邊問題比較困擾我們,╮(╯-╰)╭ ,醜醜地如下所示: 那如何處理這些問題呢?方法不是唯一的,我把 ArcMap 中最常用的幾種方式列舉一下,幫你給資料“化妝”,或者更確切的說是“整容”: Option 1 柵格計算器 在去黑邊之前
python 將dataframe的某一列離散資料轉換為數值資料
from sklearn import preprocessing def bianma(a, name): type = a.ix[:, name] a[name].fillna('0', inplace=True) le = preprocessing.LabelE
有N個學生,每個學生的資料包括學號、姓名、3門課的成績,從鍵盤輸入N個學生的資料,要求打印出3門課的總平均成績,以及最高分的學生的資料(包括學號、姓名、3門課成績)
import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Sca
Jupyter notebook執行出錯,瀏覽器頁面為空資料夾
用conda裝了好多遍jupyter notebook都不好使,每次下到一大半網路出錯。 改用pip安裝後,還是出現一個問題。命令列顯示對比正常執行情況主要多了兩行問題: 1.forbidden403 2.'_xsrf' argument missing fro
python判斷子資料夾是否為空資料夾
python判斷子資料夾是否為空資料夾,主要是os.listdir()和os.path.isdir()的運用程式碼如下 import os def search(path): files=os.listdir(path) #查詢路徑下的所有的資料夾及檔案 for filee in
小型網站不使用vue框架如何實現資料渲染到前端頁面
1,先寫ajax請求 eg: <script src="jquery.min.js"></script> <script> $(function(){ var xhrul='http://192.168.31.133:3000/jdap
基於前端框架react或者vue或者其他其他框架到出資料生成csv檔案,以及匯入csv檔案讀取資料的簡單例子
1.用npm在專案中安裝以下外掛: npm install file-saver --save npm install papaparse --save npm install jschardet --save npm install iconv-lite --save npm install
CF E. Vasya and a Tree】 dfs+樹狀陣列(給你一棵n個節點的樹,每個點有一個權值,初始全為0,m次操作,每次三個數(v, d, x)表示只考慮以v為根的子樹,將所有與v點距離小於等於d的點權值全部加上x,求所有操作完畢後,所有節點的值)
題意: 給你一棵n個節點的樹,每個點有一個權值,初始全為0,m次操作,每次三個數(v, d, x)表示只考慮以v為根的子樹,將所有與v點距離小於等於d的點權值全部加上x,求所有操作完畢後,所有節點的值 首先要明確兩件事情性質1.每個人的操作只會影響到他的子孫(包括自己) 性質1.每個人的操
Beego框架:flash資料
這個 flash 與 Adobe/Macromedia Flash 沒有任何關係。它主要用於在兩個邏輯間傳遞臨時資料,flash 中存放的所有資料會在緊接著的下一個邏輯中呼叫後清除。一般用於傳遞提示和錯誤訊息。它適合 Post/Redirect/Get 模式。下面看使用的例子: //
Beego框架:請求資料處理
#獲取引數 我們經常需要獲取使用者傳遞的資料,包括 Get、POST 等方式的請求,beego 裡面會自動解析這些資料,你可以通過如下方式獲取資料: GetString(key string) string GetStrings(key string) []string GetInt
HTTP介面自動化經驗總結(三)Okhttp3 介面測試框架搭建之資料處理
上篇文章寫了怎麼新建POST,GET方法。這篇文章介紹下該如何校驗。 因為我們在方法裡面都返回了String型別結果,String型別校驗起來比較麻煩。多數http介面返回的都是json形式。我們可以寫一個通用方法將String型別轉換為Map物件這樣校驗就比較方便準確了。廢話不多說直接上方法。