亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python用戶推薦系統(tǒng)曼哈頓算法實現(xiàn)完整代碼

 更新時間:2017年12月01日 11:31:27   投稿:mengwei  
這篇文章主要介紹了Python用戶推薦系統(tǒng)曼哈頓算法實現(xiàn)完整代碼,簡單介紹了曼哈頓距離的定義,然后分享了其Python實現(xiàn)代碼,具有一定借鑒價值,需要的朋友可以了解下。

出租車幾何或曼哈頓距離(Manhattan Distance)是由十九世紀的赫爾曼·閔可夫斯基所創(chuàng)詞匯 ,是種使用在幾何度量空間的幾何學(xué)用語,用以標明兩個點在標準坐標系上的絕對軸距總和。

圖中紅線代表曼哈頓距離,綠色代表歐氏距離,也就是直線距離,而藍色和黃色代表等價的曼哈頓距離。曼哈頓距離——兩點在南北方向上的距離加上在東西方向上的距離,即d(i,j)=|xi-xj|+|yi-yj|。對于一個具有正南正北、正東正西方向規(guī)則布局的城鎮(zhèn)街道,從一點到達另一點的距離正是在南北方向上旅行的距離加上在東西方向上旅行的距離,因此,曼哈頓距離又稱為出租車距離。曼哈頓距離不是距離不變量,當坐標軸變動時,點間的距離就會不同。曼哈頓距離示意圖在早期的計算機圖形學(xué)中,屏幕是由像素構(gòu)成,是整數(shù),點的坐標也一般是整數(shù),原因是浮點運算很昂貴,很慢而且有誤差,如果直接使用AB的歐氏距離(歐幾里德距離:在二維和三維空間中的歐氏距離的就是兩點之間的距離),則必須要進行浮點運算,如果使用AC和CB,則只要計算加減法即可,這就大大提高了運算速度,而且不管累計運算多少次,都不會有誤差。

Python用戶推薦系統(tǒng)曼哈頓算法實現(xiàn)

#-*- coding: utf-8 -*-
 
import codecs
from math import sqrt
 
users = {"Angelica": {"Blues Traveler": 3.5, "Broken Bells": 2.0, "Norah Jones": 4.5, "Phoenix": 5.0, "Slightly Stoopid": 1.5, "The Strokes": 2.5, "Vampire Weekend": 2.0},
     "Bill":{"Blues Traveler": 2.0, "Broken Bells": 3.5, "Deadmau5": 4.0, "Phoenix": 2.0, "Slightly Stoopid": 3.5, "Vampire Weekend": 3.0},
     "Chan": {"Blues Traveler": 5.0, "Broken Bells": 1.0, "Deadmau5": 1.0, "Norah Jones": 3.0, "Phoenix": 5, "Slightly Stoopid": 1.0},
     "Dan": {"Blues Traveler": 3.0, "Broken Bells": 4.0, "Deadmau5": 4.5, "Phoenix": 3.0, "Slightly Stoopid": 4.5, "The Strokes": 4.0, "Vampire Weekend": 2.0},
     "Hailey": {"Broken Bells": 4.0, "Deadmau5": 1.0, "Norah Jones": 4.0, "The Strokes": 4.0, "Vampire Weekend": 1.0},
     "Jordyn": {"Broken Bells": 4.5, "Deadmau5": 4.0, "Norah Jones": 5.0, "Phoenix": 5.0, "Slightly Stoopid": 4.5, "The Strokes": 4.0, "Vampire Weekend": 4.0},
     "Sam": {"Blues Traveler": 5.0, "Broken Bells": 2.0, "Norah Jones": 3.0, "Phoenix": 5.0, "Slightly Stoopid": 4.0, "The Strokes": 5.0},
     "Veronica": {"Blues Traveler": 3.0, "Norah Jones": 5.0, "Phoenix": 4.0, "Slightly Stoopid": 2.5, "The Strokes": 3.0}
    }
 
# Python計算曼哈頓距離 www.iplaypy.com
def manhattan(rate1,rate2):
  distance = 0
  commonRating = False
  for key in rate1:
    if key in rate2:
      distance+=abs(rate1[key]-rate2[key])
      commonRating=True
  if commonRating:
    return distance
  else:
    return -1
 
# python返回最近距離用戶
def computeNearestNeighbor(username,users):
  distances = []
  for key in users:
    if key<>username:
      distance = manhattan(users[username],users[key])
      distances.append((distance,key)) 
  distances.sort()     
  return distances
 
#推薦python實現(xiàn)
def recommend(username,users):
  #獲得最近用戶的name
  nearest = computeNearestNeighbor(username,users)[0][1]
  recommendations =[]
  #得到最近用戶的推薦列表
  neighborRatings = users[nearest]
  for key in neighborRatings:
    if not key in users[username]:
      recommendations.append((key,neighborRatings[key]))
  recommendations.sort(key=lambda rat:rat[1], reverse=True)
  return recommendations
 
   
if __name__ == '__main__':
  print recommend('Hailey', users)

總結(jié)

以上就是本文關(guān)于Python用戶推薦系統(tǒng)曼哈頓算法實現(xiàn)完整代碼的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關(guān)文章

  • python項目對接釘釘SDK的實現(xiàn)

    python項目對接釘釘SDK的實現(xiàn)

    這篇文章主要介紹了python項目對接釘釘SDK的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • django框架使用orm實現(xiàn)批量更新數(shù)據(jù)的方法

    django框架使用orm實現(xiàn)批量更新數(shù)據(jù)的方法

    這篇文章主要介紹了django框架使用orm實現(xiàn)批量更新數(shù)據(jù)的方法,結(jié)合實例形式簡單分析了Django基于orm操作數(shù)據(jù)庫更新數(shù)據(jù)的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2019-06-06
  • 對python3 一組數(shù)值的歸一化處理方法詳解

    對python3 一組數(shù)值的歸一化處理方法詳解

    今天小編就為大家分享一篇對python3 一組數(shù)值的歸一化處理方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python?讀取?Word?文檔操作

    Python?讀取?Word?文檔操作

    這篇文章主要介紹了Python讀取Word文檔操作,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • Python實現(xiàn)的文本簡單可逆加密算法示例

    Python實現(xiàn)的文本簡單可逆加密算法示例

    這篇文章主要介紹了Python實現(xiàn)的文本簡單可逆加密算法,結(jié)合完整實例形式分析了Python自定義加密與解密算法具體實現(xiàn)與使用技巧,需要的朋友可以參考下
    2017-05-05
  • 兒童學(xué)習(xí)python的一些小技巧

    兒童學(xué)習(xí)python的一些小技巧

    這篇文章給大家總結(jié)了關(guān)于兒童學(xué)python的一些技巧和知識點,對此有興趣的朋友可以跟著學(xué)習(xí)下。
    2018-05-05
  • 使用Python制作一個極簡四則運算解釋器

    使用Python制作一個極簡四則運算解釋器

    這篇文章主要介紹了使用Python制作一個極簡四則運算解釋器,在使用工具之前,至少也要了解工具的作用,需要的朋友可以參考下
    2023-04-04
  • 詳解用python生成隨機數(shù)的幾種方法

    詳解用python生成隨機數(shù)的幾種方法

    這篇文章主要介紹了詳解用python生成隨機數(shù)的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 教你使用Python寫一個簡單的JSONParser

    教你使用Python寫一個簡單的JSONParser

    這篇文章主要介紹了教你使用Python寫一個簡單的JSONParser,它的整個效果,有點類似于 python 標準庫 json 的 json.load() 方法,需要的朋友可以參考下
    2023-04-04
  • Web自動化之Selenium常用操作方法大全

    Web自動化之Selenium常用操作方法大全

    Selenium是一種自動化測試工具,可以用于測試Web應(yīng)用程序,它提供了一組用于自動化Web瀏覽器進行測試的API,下面這篇文章主要給大家介紹了關(guān)于Web自動化之Selenium常用操作方法的相關(guān)資料,需要的朋友可以參考下
    2023-06-06

最新評論