使用python基于余弦相似度探索人員相關(guān)性


課題1

畢業(yè)設(shè)計里面涉及到人員相關(guān)度的計算辆琅,在這里我提出了一個猜想笙什,大致如下:

現(xiàn)有數(shù)據(jù):學(xué)生id即供、學(xué)生手機mac地址、時間戳扫茅、地點id

構(gòu)想:通過學(xué)生mac地址某地點出現(xiàn)頻次蹋嵌,構(gòu)建頻次矩陣,比如說現(xiàn)有六個地點葫隙,ABCDEF栽烂,某學(xué)生出現(xiàn)的頻次分別為1、5、2腺办、4焰手、7、3怀喉,則[1,5,2,4,7,3]即為該學(xué)生在矩陣中的表現(xiàn)形式册倒。(總的來說就是講每個學(xué)生的出現(xiàn)頻次規(guī)律抽象成一個向量,該向量由n個Term組成磺送,每個Term都有一個權(quán)重,不同的頻次根據(jù)學(xué)生在總矩陣中影響相關(guān)度的權(quán)重)

實現(xiàn)步驟:
1.數(shù)據(jù)預(yù)處理灿意,建立空間向量模型估灿,表現(xiàn)形式為:[[3,4,1,5,6,7],[6,4,5,5,2,1],......];
2.特征抽取完之后缤剧,對矩陣進行正則化處理馅袁。
3.計算余弦相似度。

image.png

分子:兩個向量的點乘積
分母:兩個向量的模的乘積


知識點:

1.利用python進行矩陣的正則化

正則化的過程是將每個樣本縮放到單位范數(shù)(每個樣本的范數(shù)為1)荒辕,如果后面要使用如二次型(點積)或者其它核方法計算兩個樣本之間的相似性這個方法會很有用汗销。

Normalization主要思想是對每個樣本計算其p-范數(shù),然后對該樣本中每個元素除以該范數(shù)抵窒,這樣處理的結(jié)果是使得每個處理后樣本的p-范數(shù)(l1-norm,l2-norm)等于1弛针。

         p-范數(shù)的計算公式:||X||p=(|x1|^p+|x2|^p+...+|xn|^p)^1/p

該方法主要應(yīng)用于文本分類和聚類中。例如李皇,對于兩個TF-IDF向量的l2-norm進行點積削茁,就可以得到這兩個向量的余弦相似性。

sklearn數(shù)據(jù)預(yù)處理函數(shù):

from sklearn import preprocessing

2.python字典排序
知識點參照:python字典排序

python代碼


# -*- coding: UTF-8 -*-
__author__ = 'Suzibo'

import numpy as np
import pandas as pd
from sklearn import preprocessing
from sklearn import feature_extraction
#from sklearn.feature_extraction.text import TfidfTransformer
#from sklearn.feature_extraction.text import CountVectorizer

arr = np.array([[3,5,3,0,5,5],
                [3,4,3,3,5,1],
                [5,7,8,12,1,0],
                [5,1,3,1,1,2],
                [0,7,3,1,5,1],
                [7,1,2,3,6,1],
                [0,9,2,1,4,1],
                [3,0,3,1,0,5]])
#模擬了ABCDEF六個感知點掉房,對應(yīng)的八個人的頻次矩陣茧跋。TAT,因為遲遲拿不到數(shù)據(jù)卓囚,只能靠自己模擬數(shù)據(jù)玩玩了瘾杭,慘_(:з」∠)_


arr_normalized = preprocessing.normalize(arr)
#將原始矩陣正則化

result = np.zeros(((len(arr)-1),2))
n=0
#初始化結(jié)果矩陣(N行2列的0矩陣)

a=dict()
#初始化字典

for i in range(1,len(arr)):
#比較第一名同學(xué)跟其他同學(xué)的余弦相似度
    num = np.sum(arr_normalized[0]*arr_normalized[i])
#向量乘積
    denom = np.linalg.norm(arr_normalized[0]) * np.linalg.norm(arr_normalized[i])
#向量模的乘積
    cos = num/denom
    sim = 0.5 + 0.5*cos
#結(jié)果歸一化
    result[n][0]=i
    result[n][1]=sim
    n=n+1
#結(jié)果存入數(shù)組


    a[i] = sim
#結(jié)果存入字典

print result
print sorted(a.iteritems(),key=lambda asd:asd[1],reverse=True)

#在這里,用了字典對象a以及初始化了數(shù)組result分別存儲計算結(jié)果哪亿。其實兩種方法皆可粥烁,但是字典排序?qū)懫饋砀涌焖佟?
result:
[[ 1.          0.92443667]
 [ 2.          0.7434795 ]
 [ 3.          0.85627822]
 [ 4.          0.91615085]
 [ 5.          0.84737882]
 [ 6.          0.88826077]
 [ 7.          0.83610165]]
sorted(a.iteritems(),key=lambda asd:asd[1],reverse=True):
[(1, 0.9244366688881116), (4, 0.91615085086634984), (6, 0.88826076864678882), (3, 0.85627822353819516), (5, 0.84737881773469248), (7, 0.83610165222088828), (2, 0.74347950132065999)]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市锣夹,隨后出現(xiàn)的幾起案子页徐,更是在濱河造成了極大的恐慌,老刑警劉巖银萍,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件变勇,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機搀绣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門飞袋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人链患,你說我怎么就攤上這事巧鸭。” “怎么了麻捻?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵纲仍,是天一觀的道長。 經(jīng)常有香客問我贸毕,道長郑叠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任明棍,我火速辦了婚禮乡革,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘摊腋。我一直安慰自己沸版,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布兴蒸。 她就那樣靜靜地躺著视粮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪橙凳。 梳的紋絲不亂的頭發(fā)上馒铃,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機與錄音痕惋,去河邊找鬼区宇。 笑死,一個胖子當(dāng)著我的面吹牛值戳,可吹牛的內(nèi)容都是我干的议谷。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼堕虹,長吁一口氣:“原來是場噩夢啊……” “哼卧晓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起赴捞,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤逼裆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后赦政,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胜宇,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡耀怜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了桐愉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片财破。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖从诲,靈堂內(nèi)的尸體忽然破棺而出左痢,到底是詐尸還是另有隱情,我是刑警寧澤系洛,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布俊性,位于F島的核電站,受9級特大地震影響描扯,放射性物質(zhì)發(fā)生泄漏磅废。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一荆烈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧竟趾,春花似錦憔购、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至犀勒,卻和暖如春屎飘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贾费。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工钦购, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人褂萧。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓押桃,卻偏偏與公主長得像,于是被迫代替她去往敵國和親导犹。 傳聞我的和親對象是個殘疾皇子唱凯,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

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

  • ML & DM 集成學(xué)習(xí) 模型融合 ensemble http://wakemeup.space/?p=109 E...
    章魚哥呀閱讀 1,794評論 0 6
  • 數(shù)學(xué)是計算機技術(shù)的基礎(chǔ),線性代數(shù)是機器學(xué)習(xí)和深度學(xué)習(xí)的基礎(chǔ)谎痢,了解數(shù)據(jù)知識最好的方法我覺得是理解概念磕昼,數(shù)學(xué)不只是上學(xué)...
    闖王來了要納糧閱讀 22,655評論 2 48
  • 隨著智能時代慢慢的到來,有一些基本概念都不知道真的是要落伍了节猿,作為正在積極學(xué)習(xí)向上的青年票从,我想總結(jié)一份筆記,此份筆...
    yuquanle閱讀 1,399評論 0 0
  • 在這信仰迷失的世間 我想尋找一絲美好 看遍古往今來的文字 走遍萬水千山的風(fēng)景 尋遍不計其數(shù)的世人 我的期待,僅僅是...
    游春閱讀 353評論 1 4
  • 今年除夕夜我在微博上看春晚直播纫骑,叫做@春晚蝎亚,網(wǎng)友們不僅可以評論、提問先馆,還可以參與抽獎活動发框。觀看數(shù)據(jù),有三四千萬...
    Miky姐閱讀 267評論 0 0