SparkMLlib ALS算法

本次試驗使用movieLens數(shù)據(jù)集的一千萬行評分數(shù)據(jù)進行訓練和預測河绽,每個用戶取預測評分最高的Top10存入HBase,代碼如下:

#!/usr/bin/python
#encoding=utf-8

from pyspark import SparkContext
from pyspark.sql import SparkSession
from pyspark.mllib.recommendation import ALS, MatrixFactorizationModel, Rating
import happybase

connection = happybase.Connection('172.17.93.230', autoconnect=False)
connection.open()
connection.create_table('als_moive',{'recommend':dict()})
recommend = connection.table('als_moive')
sc = SparkContext(appName='als')

# Load and parse the data
data = sc.textFile("file:///root/recommend/test.csv")
ratings = data.map(lambda l: l.split(',')).map(lambda l: Rating(int(l[0]), int(l[1]), float(l[2])))
# Build the recommendation model using Alternating Least Squares
rank = 10
numIterations = 10
lambda_ = 0.02
blocks = 100
model = ALS.train(ratings, rank, numIterations, lambda_, blocks)
#model = ALS.trainImplicit(ratings, rank, numIterations,lambda_, alpha=0.1)
# Evaluate the model on training data
testdata = ratings.map(lambda p: (p[0], p[1]))
predictions = model.predictAll(testdata).map(lambda r: ((r[0], r[1]), r[2]))
ratesAndPreds = ratings.map(lambda r: ((r[0], r[1]), r[2])).join(predictions)
#print ratesAndPreds
MSE = ratesAndPreds.map(lambda r: (r[1][0] - r[1][1])**2).mean()
print("Mean Squared Error = " + str(MSE))
user_predict = model.recommendProductsForUsers(10).collect()

for x in user_predict:
    key = str(x[0])
    tmp = x[1]
    items = []
    for item in tmp:
        item_value = str(item.product) + ':' + str(item.rating)
        items.append(item_value)
    value = ','.join(items)
    recommend.put(key, {'recommend:item_value':value})

# Save and load model
model.save(sc, "file:///root/recommend/myCollaborativeFilter")
sameModel = MatrixFactorizationModel.load(sc, "target/tmp/myCollaborativeFilter")
sc.stop()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖桅滋,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異身辨,居然都是意外死亡丐谋,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門煌珊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來号俐,“玉大人,你說我怎么就攤上這事定庵±舳觯” “怎么了蔬浙?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長敛滋。 經(jīng)常有香客問我,道長绎晃,這世上最難降的妖魔是什么蜜唾? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任杂曲,我火速辦了婚禮袁余,結(jié)果婚禮上擎勘,老公的妹妹穿的比我還像新娘颖榜。我一直安慰自己棚饵,他們只是感情好,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布掩完。 她就那樣靜靜地躺著噪漾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪且蓬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天诈胜,我揣著相機與錄音,去河邊找鬼焦匈。 笑死昵仅,一個胖子當著我的面吹牛缓熟,可吹牛的內(nèi)容都是我干的摔笤。 我是一名探鬼主播荚虚,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼梯澜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起晚伙,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎漓帚,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尝抖,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年衙熔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片红氯。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡咕痛,死狀恐怖痢甘,靈堂內(nèi)的尸體忽然破棺而出茉贡,到底是詐尸還是另有隱情,我是刑警寧澤块仆,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站庄敛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏藻烤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一头滔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧兴猩,春花似錦、人聲如沸倾芝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谱姓。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間路翻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工亿驾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留账嚎,地道東北人莫瞬。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓郭蕉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親召锈。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容