日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

聚类算法中各种距离的计算与python的具体实现代码

發(fā)布時間:2025/4/5 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 聚类算法中各种距离的计算与python的具体实现代码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、聚類算法和相似度

在機器學習中,有兩類學習算法,一類是無監(jiān)督學習,另一類是監(jiān)督學習。聚類算法是無監(jiān)督學習算法,一般構(gòu)建用戶興趣屬性畫像等可應(yīng)用聚類算法;而一般的分類算法是有監(jiān)督學習,基于有標注的歷史數(shù)據(jù)進行算法模型構(gòu)建 。?

聚類的定義可以是這樣的:對大量未知標注的數(shù)據(jù)集,按照數(shù)據(jù)內(nèi)部存在的數(shù)據(jù)特征將數(shù)據(jù)集劃分為多個不同的類別,使得類別內(nèi)的數(shù)據(jù)比較相似,類別間的數(shù)據(jù)相似度較小。重點是計算樣本之間的相似度,這個相似度有時候也稱為樣本間的距離。

那么聚類中如何度量相似度呢?一般有兩種方法,一種是對所有樣本作特征投影,另一種則是距離計算。前者主要從直觀的圖像上反應(yīng)樣本之間的相似度關(guān)系,而后者則是通過衡量對象之間的差異度來反應(yīng)樣本之間的相似度關(guān)系。

一些基礎(chǔ)概念:

1、范數(shù)(數(shù)學基礎(chǔ)) ?

向量的范數(shù)可以簡單、形象地理解為向量的長度,或者向量到坐標系原點的距離,或者相應(yīng)空間內(nèi)的兩點之間的距離。

向量的范數(shù)定義: 向量的范數(shù)是一個函數(shù)||x||,滿足非負性||x||>0,齊次性||cx||=|c|*||x||,三角不等式||x+y||<=||x||+||y||.

L1范數(shù): ||x||為x向量各個元素絕對值之和。

L2范數(shù): ||x||為x向量各個元素平方和的開方,L2范數(shù)又稱歐幾里得范數(shù)。

Lp范數(shù): ||x||為x向量各個元素絕對值的p次方和的1/p次方。

L無窮范數(shù): ||x||為x向量各個元素絕對值最大的那個元素。

2、n維空間

距離的計算是基于一定的n維空間上的。

例如采集1個億微信用戶樣本,他們的特征變量不太一樣,例如年齡、收入、性格、學歷、職業(yè)、興趣、生活作息習慣等等進行初步的量化轉(zhuǎn)化,作為輸入變量進行假設(shè)分析。 ?那么這一個億樣本里面,哪些人是能夠做為中產(chǎn)階級,哪些人是可以作為文藝青年? ?可以建立文藝青年分類指標,然后分析每個樣本個體之間的接近或相似程度,分組建立關(guān)聯(lián)函數(shù)。 ?從直觀和簡單的分組概念出發(fā),對于龐大的數(shù)據(jù),也可以進行客觀的統(tǒng)計學分組劃分。 ?這里就會用到聚類分析方法,首先是測量樣本個體之間的差異或相似程度。 ?這里引入空間幾何概念,即將每個樣本當作一個點,分布在n維空間里,每個維度分別是年齡、收入、性格等。 ?如果兩個變量越接近,我們定義為兩個點之間的越相似或親密,這里使用“距離”的概念進行定義。 ?如果變量是數(shù)值型的變量,而非函數(shù)變量。那么可以使用如下空間和距離進行量化樣本之間的相似程度。

?

二、各種距離的計算和python實現(xiàn)

閔可夫斯基距離 (Minkowski Distance)
歐式距離 (Euclidean Distance)
曼哈頓距離 (Manhattan Distance)
切比雪夫距離 (Chebyshew Distance)
夾角余弦 (Cosine)
漢明距離 (Hamming Distance)
杰卡德相似系數(shù) (Jaccard Similarity Coefficient)

?

1.閔可夫斯基距離 (Minkowski Distance)

嚴格意義上講,閔可夫斯基距離不能算是一種距離,而是一組距離的定義。
設(shè)有兩個n維向量A(x1,x2,x3,….xn)和B(y1,y2,y3,….yn)間的閔可夫斯基距離定義為:

其中p是一個參數(shù)。
當p=1時,就是曼哈頓距離;
當p=2時,就是歐式距離;
當p->無窮時,就是切比雪夫距離。

2.歐式距離 (Euclidean Distance)

歐式距離(L2范數(shù))是最易于理解的一種距離計算方法,源于歐式空間中兩點間的距離公式。兩個n維向量A(x1,x2,x3,…xn)和B(y1,y2,y3,…..yn)間的歐式距離:

Python實現(xiàn)歐式距離:
from numpy import *

vector1=mat([1,2,3])
vector2=mat([4,5,6])

print sqrt((vector1-vector2)*(vector1-vector2).T)

3.曼哈頓距離 (Manhattan Distance)

曼哈頓距離也稱城市街區(qū)距離(City Block Distance),也就是L1范數(shù)。
二維平面兩點A(x1,y1)和B(x2,y2)間的曼哈頓距離為:
d=|x2-x1|+|y2-y1|
兩個n維向量A(x1,x2,x3,…xn)和B(y1,y2,y3,….yn)間的曼哈頓距離為:

Python實現(xiàn)曼哈頓距離:
from numpy import *
vector1=mat([1,2,3])
vector2=mat([4,5,6])
print sum(abs(vector1-vector2))

4.切比雪夫距離 (Chebyshew Distance)

國際象棋中,國王每走一步能夠走到相鄰的8個方格中的任意一個,那么國王從A(x1,y1)走到B(x2,y2)最少需要多少步?最少步數(shù)總是max(|x2-x1|,|y2-y1|)步。類似的距離度量方法叫做切比雪夫距離(L無窮范數(shù))。

n維向量A(x11,x12,x13,….x1n)和B(x21,x22,x23,….x2n)間的切比雪夫距離:

它的另一種等價形式為:

Python實現(xiàn)切比雪夫距離:
from numpy import *

vector1=mat([1,2,3])
vector2=mat([4,7,6])
print abs(vector1-vector2).max()

5.夾角余弦 (Cosine)

幾何中夾角余弦可用來衡量兩個向量方向的差異,機器學習中用這一概念衡量樣本向量之間的差異。
兩個n維樣本點A(x11,x12,x13,…x1n)與B(x21,x22,x23,…x2n)的夾角余弦:類似地,對于兩個樣本點A(x11,x12,x13,…x1n)與B(x21,x22,x23,…x2n),可以使用類似夾角余弦的概念來衡量他們間的相似程度。


python 實現(xiàn)向量夾角

from numpy import *

vector1=mat([1,2,3])
vector2=mat([4,7,6])

cosV12=dot(vector1,vector2)/(linalg.norm(vector1)*linalg.norm(vector2))
print cosV12

6.漢明距離 (Hamming Distance)

漢明距離的定義:兩個登場字符串s1和s2之間的漢明距離定義為將其中一個變?yōu)榱硗庖粋€所需要的最小替換次數(shù)。
應(yīng)用:信息編碼(為了增強容錯性,應(yīng)使得編碼間的最小漢明距離盡可能大)

Python實現(xiàn)漢明距離

from numpy import *
matV=mat([1,1,0,1,1,0,1],[1,0,1,0,1,0,1])
smstr=nonzero(matV[0]-matV[1])
print shape(smstr[0]) [1]

7.杰卡德相似系數(shù) (Jaccard Similarity Coefficient)

兩個集合A和B的交集元素在A、B的并集中所占的比率,稱為兩個集合的杰卡德相似系數(shù)。

杰卡德相似系數(shù)是衡量兩個集合相似度的一種指標。
杰卡德距離:與杰卡德相似系數(shù)相反的概念是杰卡德距離。

Python實現(xiàn)杰卡德距離
from numpy import *
import scipy.spatial.distance as dist #導入Scipy距離公式
matV=mat([1,1,0,1,0,1,0,0,1],[0,1,0,1,0,1,0,1,0])
print “dist.jaccard:”,dist.pdist(matV,’jaccard’)

總結(jié)

以上是生活随笔為你收集整理的聚类算法中各种距离的计算与python的具体实现代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。