最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python機(jī)器學(xué)習(xí)中實(shí)現(xiàn)距離和相似性計(jì)算詳解

 更新時(shí)間:2023年03月08日 08:43:25   作者:吃肉的小饅頭  
這篇文章主要為大家詳細(xì)介紹了Python機(jī)器學(xué)習(xí)中實(shí)現(xiàn)距離和相似性計(jì)算的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

歐氏距離

也稱歐幾里得距離,是指在m維空間中兩個(gè)點(diǎn)之間的真實(shí)距離。歐式距離在ML中使用的范圍比較廣,也比較通用,就比如說(shuō)利用k-Means對(duì)二維平面內(nèi)的數(shù)據(jù)點(diǎn)進(jìn)行聚類,對(duì)魔都房?jī)r(jià)的聚類分析(price/m^2 與平均房?jī)r(jià))等。

兩個(gè)n維向量a

(x11?,x12?.....x1n?)

與 b

(x21?,x22?.....x2n?)

間的歐氏距離

python 實(shí)現(xiàn)為:

def EuclideanDistance(x, y):
    import numpy as np
    x = np.array(x)
    y = np.array(y)
    return np.sqrt(np.sum(np.square(x-y)))

這里傳入的參數(shù)可以是任意維的,該公式也適應(yīng)上邊的二維和三維

曼哈頓距離

python 實(shí)現(xiàn)為:

def ManhattanDistance(x, y):
    import numpy as np
    x = np.array(x)
    y = np.array(y)
    return np.sum(np.abs(x-y))

切比雪夫距離

切比雪夫距離(Chebyshev Distance)的定義為:max( | x2-x1 | , |y2-y1 | , … ), 切比雪夫距離用的時(shí)候數(shù)據(jù)的維度必須是三個(gè)以上

python 實(shí)現(xiàn)為:

def ChebyshevDistance(x, y):
    import numpy as np
    x = np.array(x)
    y = np.array(y)
    return np.max(np.abs(x-y))

馬氏距離

有M個(gè)樣本向量X1~Xm,協(xié)方差矩陣記為S,均值記為向量μ,則其中樣本向量X到u的馬氏距離表示為

python實(shí)現(xiàn):

def MahalanobisDistance(x, y):
    '''
    馬氏居立中的(x,y)與歐幾里得距離的(x,y)不同,歐幾里得距離中的(x,y)指2個(gè)樣本,每個(gè)樣本的維數(shù)為x或y的維數(shù);這里的(x,y)指向量是2維的,樣本個(gè)數(shù)為x或y的維數(shù),若要計(jì)算n維變量間的馬氏距離則需要改變輸入的參數(shù)如(x,y,z)為3維變量。
    '''
    import numpy as np
    x = np.array(x)
    y = np.array(y)
    
    X = np.vstack([x,y])
    X_T = X.T
    sigma = np.cov(X)
    sigma_inverse = np.linalg.inv(sigma)
    
    d1=[]
    for i in range(0, X_T.shape[0]):
        for j in range(i+1, X_T.shape[0]):
            delta = X_T[i] - X_T[j]
            d = np.sqrt(np.dot(np.dot(delta,sigma_inverse),delta.T))
            d1.append(d)
        
    return d1

夾角余弦

def moreCos(a,b):
    sum_fenzi = 0.0
    sum_fenmu_1,sum_fenmu_2 = 0,0
    for i in range(len(a)):
        sum_fenzi += a[i]*b[i]
        sum_fenmu_1 += a[i]**2 
        sum_fenmu_2 += b[i]**2 

    return sum_fenzi/( sqrt(sum_fenmu_1) * sqrt(sum_fenmu_2) )

閔可夫斯基距離

當(dāng)p=1時(shí),就是曼哈頓距離

當(dāng)p=2時(shí),就是歐氏距離

當(dāng)p→∞時(shí),就是切比雪夫距離

python實(shí)現(xiàn):

def MinkowskiDistance(x, y, p):
    import math
    import numpy as np
    zipped_coordinate = zip(x, y)
    return math.pow(np.sum([math.pow(np.abs(i[0]-i[1]), p) for i in zipped_coordinate]), 1/p)

漢明距離

兩個(gè)等長(zhǎng)字符串s1與s2之間的漢明距離定義為將其中一個(gè)變?yōu)榱硗庖粋€(gè)所需要作的最小替換次數(shù)

def hanmingDis(a,b):
    sumnum = 0
    for i in range(len(a)):
        if a[i]!=b[i]:
            sumnum += 1
    return sumnum

杰卡德距離 & 杰卡德相似系數(shù)

杰卡德距離,杰卡德距離用兩個(gè)集合中不同元素占所有元素的比例來(lái)衡量?jī)蓚€(gè)集合的區(qū)分度。

def jiekadeDis(a,b):
    set_a = set(a)
    set_b = set(b)
    dis = float(len( (set_a | set_b) - (set_a & set_b) ) )/ len(set_a | set_b)
    return dis

杰卡德相似系數(shù)

兩個(gè)集合A和B的交集元素在A,B的并集中所占的比例,稱為兩個(gè)集合的杰卡德相似系數(shù),用符號(hào)J(A,B)表示。

def jiekadeXSDis(a,b):
    set_a = set(a)
    set_b = set(b)
    dis = float(len(set_a & set_b)  )/ len(set_a | set_b)
    return dis

相關(guān)系數(shù) & 相關(guān)距離

相關(guān)系數(shù)

import math

def c_Pearson(x, y):

    x_mean, y_mean = sum(x)/len(x), sum(y)/len(y)
    cov =0.0
    x_pow = 0.0
    y_pow = 0.0
    for i in range(len(x)):
        cov += (x[i]-x_mean) *(y[i] - y_mean)
    for i in range(len(x)):
        x_pow += math.pow(x[i] - x_mean, 2)
    for i in range(len(x)):
        y_pow += math.pow(y[i] - y_mean, 2)
    sumBm = math.sqrt(x_pow * y_pow)
    p = cov / sumBm

    return p

信息熵

衡量分布的混亂程度或分散程度的一種度量.

import numpy as np

data=['a','b','c','a','a','b']
data1=np.array(data)
#計(jì)算信息熵的方法
def calc_ent(x):
    """
        calculate shanno ent of x
    """

    x_value_list = set([x[i] for i in range(x.shape[0])])
    ent = 0.0
    for x_value in x_value_list:
        p = float(x[x == x_value].shape[0]) / x.shape[0]
        logp = np.log2(p)
        ent -= p * logp

    return ent

到此這篇關(guān)于Python機(jī)器學(xué)習(xí)中實(shí)現(xiàn)距離和相似性計(jì)算詳解的文章就介紹到這了,更多相關(guān)Python距離 相似性計(jì)算內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用pandas生成/讀取csv文件的方法實(shí)例

    使用pandas生成/讀取csv文件的方法實(shí)例

    在使用Pandas處理數(shù)據(jù)時(shí),常見的讀取數(shù)據(jù)的方式時(shí)從Excel或CSV文件中獲取,這篇文章主要給大家介紹了關(guān)于如何使用pandas生成、讀取csv文件的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • python多線程操作實(shí)例

    python多線程操作實(shí)例

    這篇文章主要介紹了python多線程操作實(shí)例,本文先是講解了python多線程的相關(guān)知識(shí)、python多線程使用的兩種方法等內(nèi)容,需要的朋友可以參考下
    2014-11-11
  • PyCharm上安裝Package的實(shí)現(xiàn)(以pandas為例)

    PyCharm上安裝Package的實(shí)現(xiàn)(以pandas為例)

    這篇文章主要介紹了PyCharm上安裝Package的實(shí)現(xiàn)(以pandas為例),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Django框架實(shí)現(xiàn)分頁(yè)顯示內(nèi)容的方法詳解

    Django框架實(shí)現(xiàn)分頁(yè)顯示內(nèi)容的方法詳解

    這篇文章主要介紹了Django框架實(shí)現(xiàn)分頁(yè)顯示內(nèi)容的方法,結(jié)合實(shí)例形式詳細(xì)分析了Django框架引入bootstrap樣式進(jìn)行分頁(yè)顯示相關(guān)步驟、實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下
    2019-05-05
  • python實(shí)現(xiàn)多線程暴力破解登陸路由器功能代碼分享

    python實(shí)現(xiàn)多線程暴力破解登陸路由器功能代碼分享

    這篇文章主要介紹了python實(shí)現(xiàn)多線程暴力破解登陸路由器功能代碼分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-01-01
  • python3.5繪制隨機(jī)漫步圖

    python3.5繪制隨機(jī)漫步圖

    這篇文章主要為大家詳細(xì)介紹了python3.5繪制隨機(jī)漫步圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Python如何實(shí)現(xiàn)動(dòng)態(tài)數(shù)組

    Python如何實(shí)現(xiàn)動(dòng)態(tài)數(shù)組

    這篇文章主要介紹了Python如何實(shí)現(xiàn)動(dòng)態(tài)數(shù)組,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Anaconda3中的Jupyter notebook添加目錄插件的實(shí)現(xiàn)

    Anaconda3中的Jupyter notebook添加目錄插件的實(shí)現(xiàn)

    這篇文章主要介紹了Anaconda3中的Jupyter notebook添加目錄插件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Python自然語(yǔ)言處理之詞干,詞形與最大匹配算法代碼詳解

    Python自然語(yǔ)言處理之詞干,詞形與最大匹配算法代碼詳解

    這篇文章主要介紹了Python自然語(yǔ)言處理之詞干,詞形與MaxMatch算法代碼詳解,涉及詞干提取,詞形還原,簡(jiǎn)單總結(jié)了二者的區(qū)別和聯(lián)系,最后還分享了最大匹配算法的相關(guān)示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 用python給自己做一款小說(shuō)閱讀器過(guò)程詳解

    用python給自己做一款小說(shuō)閱讀器過(guò)程詳解

    這篇文章主要介紹了用python給自己做一款小說(shuō)閱讀器過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07

最新評(píng)論

时尚| 怀集县| 尼勒克县| 申扎县| 民县| 绥江县| 双江| 晋中市| 扎兰屯市| 苍山县| 华容县| 清苑县| 天气| 沁源县| SHOW| 丹棱县| 卢龙县| 塘沽区| 德阳市| 镇赉县| 南陵县| 大厂| 临沭县| 巩义市| 乌恰县| 射洪县| 昌图县| 奎屯市| 寿光市| 库车县| 长岛县| 吴川市| 铁力市| 凤庆县| 明星| 孟州市| 昭苏县| 辛集市| 伊金霍洛旗| 阳城县| 堆龙德庆县|