<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Skynet

    ---------- ---------- 我的新 blog : liukaiyi.cublog.cn ---------- ----------

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      112 Posts :: 1 Stories :: 49 Comments :: 0 Trackbacks


    公式:



    #數據 elt 清洗后(txt)
    #
     一般 user 和 item 分值化 
    #
     比如 用戶下載,收藏,試聽 某item 等等
    user    items    score
    .


    # 結果輸出 (bdb)
    #
     user    item1:score1,item2:score2,item3:score3.

    python
    <<EOF
    import bsddb
    db 
    = bsddb.hashopen('user-items.db','c')
    for row in open('user-item-sc.txt'):
        row
    =row.split('\n')[0]
        dr 
    = row.split(':')
        
    if not db.has_key(dr[0]) : db[dr[0]]=dr[1]+':'+dr[2]
        
    else : db[dr[0]]=db[dr[0]]+';'+dr[1]+':'+dr[2]

    db.close()
    EOF


    # 結果輸出 (txt)
    #
     user    user     score


    python
    <<EOF
    import bsddb
    from math import *
    db 
    = bsddb.hashopen('user-items.db','c')

    def ps(u1,u2):
        um1
    ={}
        
    for v in db[u1].split(';') :
            v
    =v.split(':')
            um1[v[0]]
    =float(v[1])
        um2
    ={}
        si
    =[]
        
    for v in db[u2].split(';') :
            v
    =v.split(':')
            um2[v[0]]
    =float(v[1])
            
    if um1.has_key( v[0] ) : si.append(v[0])
        n 
    = len(si)

        
    if n ==0.0 :return None
        
        sum1
    =sum( [um1[it] for it in si] )
        sum2
    =sum( [um2[it] for it in si] )
        
        sum1Sq
    =sum([ pow(um1[it],2for it in si])
        sum2Sq
    =sum([ pow(um2[it],2for it in si])
        
        pSum 
    = sum( [ um1[it]*um2[it] for it in si ] )

        num 
    = pSum - (sum1*sum2/n)
        den 
    = sqrt( (sum1Sq-pow(sum1,2)/n )*( sum2Sq-pow(sum2,2)/n ) )
        
    if den==0.0 : return None
        
    return num/den

    fc 
    = open('user-user-sc.txt','w')
    for i in xrange(1,43381):
        
    for j in xrange(i+1,43381):
            sc 
    = ps(str(i),str(j))  
            
    if not sc == None: print >>fc, "%s\t%s\t%s" %(i,j,sc)      

    fc.close()

    EOF





    # 測試使用
    python<<EOF
    import bsddb
    db 
    = bsddb.hashopen('user-items.db','c')
    print db['1']
    EOF

    25    30604    1.0

    print um1['468'],um1['471']
    2.0 1.0
    (Pdb) 
    print um2['468'],um2['471']
    2.0 1.0






    如果對大家對 推薦有一些了解,數據能到 用戶與用戶關系(分值化) ,是能干很多事情了。
    比如:
      1. 首先得到某用戶相近度最高的幾位活躍用戶,看這幾位用戶在看什么,聽什么 然后推薦出去

    擴展:
      把初始值 反過來  item  user  score ,然后統計出 item 和 item 之間的關系 。
      當 消費某一產品 ,馬上推薦出 其他的相近的產品 (時時推薦)

     



    整理 m.tkk7.com/Good-Game
    posted on 2009-11-22 23:56 劉凱毅 閱讀(1468) 評論(0)  編輯  收藏 所屬分類: 算法/函數
    主站蜘蛛池模板: **aaaaa毛片免费| 99在线热播精品免费99热| 成人在线免费看片| 亚洲最大黄色网站| 一二三四在线播放免费观看中文版视频 | 亚洲人成黄网在线观看| 无码人妻久久一区二区三区免费| 亚洲国产另类久久久精品| 国产免费一区二区三区不卡| 亚洲AV永久无码精品水牛影视| 日韩视频在线观看免费| 久久亚洲sm情趣捆绑调教| 国产一卡二卡四卡免费| 亚洲午夜精品久久久久久app| 国产最新凸凹视频免费| 男人j进女人p免费视频| 亚洲一区无码精品色| 午夜不卡久久精品无码免费| 亚洲伊人久久大香线蕉| 免费无码成人AV片在线在线播放| 精品国产亚洲第一区二区三区| 亚洲精品国产综合久久一线| 中文字幕日本人妻久久久免费| 亚洲欧洲精品国产区| 国产高清在线免费| 国产精品无码永久免费888| 亚洲国产日韩一区高清在线| 毛片免费视频观看| 国产免费人成视频在线播放播 | 亚洲区视频在线观看| 国产伦精品一区二区三区免费迷 | 中文字幕亚洲精品资源网| 成年人在线免费看视频| av网站免费线看| 亚洲精品中文字幕麻豆 | 久久国产精品亚洲综合| 亚洲人成网站免费播放| 国产精品内射视频免费| 亚洲人成电影院在线观看| 亚洲国产精品第一区二区三区| 中文字幕在线免费观看|