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

歡迎訪問 生活随笔!

生活随笔

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

python

【机器学习基础】常见二分类损失函数、距离度量的Python实现

發布時間:2025/3/8 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【机器学习基础】常见二分类损失函数、距离度量的Python实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文用Python實現了常見的幾種距離度量、二分類損失函數。

設和為兩個向量,求它們之間的距離。

這里用Numpy實現,設和為ndarray <numpy.ndarray>,它們的shape都是(N,)

為所求的距離,是個浮點數(float)。

import?numpy?as?np

1.歐氏距離(Euclidean distance)

歐幾里得度量(euclidean metric)(也稱歐氏距離)是一個通常采用的距離定義,指在m維空間中兩個點之間的真實距離,或者向量的自然長度(即該點到原點的距離)。在二維和三維空間中的歐氏距離就是兩點之間的實際距離。

def?euclidean(x,?y):return?np.sqrt(np.sum((x?-?y)**2))

2.曼哈頓距離(Manhattan distance)

想象你在曼哈頓要從一個十字路口開車到另外一個十字路口,駕駛距離是兩點間的直線距離嗎?顯然不是,除非你能穿越大樓。實際駕駛距離就是這個“曼哈頓距離”。而這也是曼哈頓距離名稱的來源, 曼哈頓距離也稱為城市街區距離(City Block distance)。

def?manhattan(x,?y):return?np.sum(np.abs(x?-?y))

3.切比雪夫距離(Chebyshev distance)

在數學中,切比雪夫距離(Chebyshev distance)或是L∞度量,是向量空間中的一種度量,二個點之間的距離定義是其各坐標數值差絕對值的最大值。以數學的觀點來看,切比雪夫距離是由一致范數(uniform norm)(或稱為上確界范數)所衍生的度量,也是超凸度量(injective metric space)的一種。

def?chebyshev(x,?y):return?np.max(np.abs(x?-?y))

4.閔可夫斯基距離(Minkowski distance)

閔氏空間指狹義相對論中由一個時間維和三個空間維組成的時空,為俄裔德國數學家閔可夫斯基(H.Minkowski,1864-1909)最先表述。他的平坦空間(即假設沒有重力,曲率為零的空間)的概念以及表示為特殊距離量的幾何學是與狹義相對論的要求相一致的。閔可夫斯基空間不同于牛頓力學的平坦空間。

def?minkowski(x,?y,?p):return?np.sum(np.abs(x?-?y)?**?p)?**?(1?/?p)

5.漢明距離(Hamming distance)

漢明距離是使用在數據傳輸差錯控制編碼里面的,漢明距離是一個概念,它表示兩個(相同長度)字對應位不同的數量,我們以表示兩個字,之間的漢明距離。對兩個字符串進行異或運算,并統計結果為1的個數,那么這個數就是漢明距離。

def?hamming(x,?y):return?np.sum(x?!=?y)?/?len(x) 6.二分類損失函數在二分類的監督學習中,支持向量機、邏輯斯諦回歸與最大熵模型、提升方法各自使用合頁損失函數、邏輯斯諦損失函數、指數損失函數,分別寫為:這 3 種損失函數都是 0-1 損失函數的上界,具有相似的形狀。(見下圖,由代碼生成) import?numpy?as?np import?math import?matplotlib.pyplot?as?plt plt.rcParams['font.sans-serif']?=?['SimHei'] plt.rcParams['axes.unicode_minus']?=?False plt.figure(figsize=(10,8)) x?=?np.linspace(start=-1,?stop=2,?num=1001,?dtype=np.float) logi?=?np.log(1?+?np.exp(-x))?/?math.log(2) boost?=?np.exp(-x) y_01?=?x?<?0 y_hinge?=?1.0?-?x y_hinge[y_hinge?<?0]?=?0plt.plot(x,?y_01,?'g-',?mec='k',?label='(0/1損失)0/1?Loss',?lw=2) plt.plot(x,?y_hinge,?'b-',?mec='k',?label='(合頁損失)Hinge?Loss',?lw=2) plt.plot(x,?boost,?'m--',?mec='k',?label='(指數損失)Adaboost?Loss',?lw=2) plt.plot(x,?logi,?'r-',?mec='k',?label='(邏輯斯諦損失)Logistic?Loss',?lw=2) plt.grid(True,?ls='--') plt.legend(loc='upper?right',fontsize=15) plt.xlabel('函數間隔:$yf(x)$',fontsize=20) plt.title('損失函數',fontsize=20) plt.show()總結本文用Python實現了常見的幾種距離度量、損失函數,歡迎收藏!往期精彩回顧適合初學者入門人工智能的路線及資料下載 機器學習在線手冊 深度學習在線手冊 AI基礎下載(pdf更新到25集) 本站qq群1003271085,加入微信群請回復“加群” 獲取一折本站知識星球優惠券,復制鏈接直接打開: https://t.zsxq.com/yFQV7am 喜歡文章,點個在看

總結

以上是生活随笔為你收集整理的【机器学习基础】常见二分类损失函数、距离度量的Python实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。