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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

sklearn svm如何选择核函数_使用python+sklearn实现成对度量、相关性和核函数

發(fā)布時(shí)間:2024/4/19 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sklearn svm如何选择核函数_使用python+sklearn实现成对度量、相关性和核函数 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
sklearn.metrics.pairwise子模塊實(shí)現(xiàn)了評(píng)估樣本集的成對(duì)距離或相關(guān)性。此模塊包含距離度量和內(nèi)核。這里對(duì)這兩個(gè)問(wèn)題作了簡(jiǎn)要的總結(jié)。距離度量是函數(shù)d(a, b),如果對(duì)象a和b被認(rèn)為比對(duì)象a和c“更相似”,則 d(a, b) < d(a, c)。兩個(gè)完全相似的對(duì)象距離為零。使用最為廣泛的距離度量是歐幾里德距離,要成為“真實(shí)的”度量,它必須遵守以下四個(gè)條件:1. 對(duì)于所有的 a 和 b,d(a, b) >= 02. 半正定性:d(a, b) == 0, 當(dāng)且僅當(dāng) a = b3. 對(duì)稱性:d(a, b) == d(b, a)4. 三角不等性:d(a, c) <= d(a, b) + d(b, c)核函數(shù)是相似性的度量,即如果對(duì)象a和b被認(rèn)為比對(duì)象 a和 c“更相似”,則s(a, b) > s(a, c)。核函數(shù)也必須是半正定的(positive semi-definite)。有很多方法可以在距離度量和相似度量(如核函數(shù))之間進(jìn)行轉(zhuǎn)換。設(shè) D為距離, S為核函數(shù):
  • S = np.exp(-D * gamma), 其中g(shù)amma 的一種選擇是 1 / num_features
  • S = 1. / (D / np.max(D))
  • X的行向量和Y的行向量之間的距離可以用pairwise_distances來(lái)計(jì)算,如果省略Y,則是計(jì)算 X行向量的成對(duì)距離。類(lèi)似地,pairwise.pairwise_kernels可使用不同的核函數(shù)計(jì)算 X和Y之間的 kernel 。有關(guān)更多詳細(xì)信息,請(qǐng)參閱API參考。>>> import numpy as np>>> from sklearn.metrics import pairwise_distances>>> from sklearn.metrics.pairwise import pairwise_kernels>>> X = np.array([[2, 3], [3, 5], [5, 8]])>>> Y = np.array([[1, 0], [2, 1]])>>> pairwise_distances(X, Y, metric='manhattan')array([[ 4., 2.], [ 7., 5.], [12., 10.]])>>> pairwise_distances(X, metric='manhattan')array([[0., 3., 8.], [3., 0., 5.], [8., 5., 0.]])>>> pairwise_kernels(X, Y, metric='linear')array([[ 2., 7.], [ 3., 11.], [ 5., 18.]])

    1. 余弦相似度(cosine similarity)

    cosine_similarity計(jì)算L2標(biāo)準(zhǔn)化(L2-normalized)向量的點(diǎn)積。即,如果x和y是行向量,則其余弦相似性k定義為:這被稱為余弦相似性,因?yàn)闅W幾里德(L2)標(biāo)準(zhǔn)化將向量投影到單位球面上,然后它們的點(diǎn)積就是由向量所表示的點(diǎn)之間的角度余弦。該核函數(shù)是計(jì)算文檔(以tf-idf向量表示的)間相似度的常用選擇。cosine_similarity接受 scipy.sparse矩陣。(請(qǐng)注意,sklearn.feature_extraction.text中的 tf-idf 函數(shù)可以生成標(biāo)準(zhǔn)化向量,在這種情況下,cosine_similarity等同于linear_kernel,速度較慢。)參考文獻(xiàn):
    • C.D. Manning, P. Raghavan and H. Schütze (2008). Introduction to Information Retrieval. Cambridge University Press. https://nlp.stanford.edu/IR-book/html/htmledition/the-vector-space-model-for-scoring-1.html

    2. 線性核函數(shù)

    linear_kernel函數(shù)計(jì)算線性核函數(shù),即degree=1且coef0=0(齊次)的polynomial_kernel的一種特殊情況。如果x和 y是列向量,則它們的線性核函數(shù)為:

    3. 多項(xiàng)式核函數(shù)

    polynomial_kernel函數(shù)計(jì)算兩個(gè)向量之間的 d 次(degree-d)多項(xiàng)式核函數(shù)。多項(xiàng)式核函數(shù)表示兩個(gè)向量之間的相似性,從概念上講,多項(xiàng)式核函數(shù)不僅考慮了同一維數(shù)下向量之間的相似性,而且還考慮了跨維數(shù)向量之間的相似性,當(dāng)用于機(jī)器學(xué)習(xí)算法時(shí),可以考慮特征交互性(feature interaction)。多項(xiàng)式核函數(shù)定義為:其中:
    • x, y 是輸入向量
    • d is 是核函數(shù)的次數(shù)(degree)
    如果,則稱內(nèi)核是齊次的(homogeneous)。

    4. Sigmoid 核函數(shù)

    sigmoid_kernel函數(shù)計(jì)算兩個(gè)向量之間的sigmoid核函數(shù)。sigmoid核函數(shù)也被稱為雙曲正切(hyperbolic tangent)或多層感知器(因?yàn)樵谏窠?jīng)網(wǎng)絡(luò)領(lǐng)域,它經(jīng)常被用作神經(jīng)元激活函數(shù))。定義如下:其中:
    • x, y 是輸入向量
    • 為斜率
    • 為截距

    5. RBF 核函數(shù)

    rbf_kernel函數(shù)計(jì)算兩個(gè)向量之間的徑向基函數(shù)(RBF)核。此核函數(shù)定義為:其中 x和y是輸入向量。如果,則該核函數(shù)稱為方差為的高斯核函數(shù)。

    6. Laplacian 核函數(shù)

    laplacian_kernel函數(shù)是徑向基函數(shù)核的變體,定義如下:其中 x和y是輸入向量,是輸入向量之間的曼哈頓距離。它在無(wú)噪數(shù)據(jù)的最大似然估計(jì)中得到了很好的應(yīng)用。參閱量子力學(xué)的機(jī)器學(xué)習(xí)。

    7. Chi-squared (卡方)核函數(shù)

    chi-squared 核函數(shù)是計(jì)算機(jī)視覺(jué)應(yīng)用中訓(xùn)練非線性支持向量機(jī)的一種常用方法。它可以使用chi2_kernel進(jìn)行計(jì)算,然后通過(guò)kernel="precomputed"傳遞給sklearn.svm.SVC:>>> from sklearn.svm import SVC>>> from sklearn.metrics.pairwise import chi2_kernel>>> X = [[0, 1], [1, 0], [.2, .8], [.7, .3]]>>> y = [0, 1, 0, 1]>>> K = chi2_kernel(X, gamma=.5)>>> Karray([[1. , 0.36787944, 0.89483932, 0.58364548], [0.36787944, 1. , 0.51341712, 0.83822343], [0.89483932, 0.51341712, 1. , 0.7768366 ], [0.58364548, 0.83822343, 0.7768366 , 1. ]])>>> svm = SVC(kernel='precomputed').fit(K, y)>>> svm.predict(K)array([0, 1, 0, 1])它還可以直接用作kernel參數(shù):>>> svm = SVC(kernel=chi2_kernel).fit(X, y)>>> svm.predict(X)array([0, 1, 0, 1])chi squared 核函數(shù)定義為:假設(shè)數(shù)據(jù)是非負(fù)的,并且通常被標(biāo)準(zhǔn)化為L(zhǎng)1范數(shù)。標(biāo)準(zhǔn)化是通過(guò)與卡方距離(即離散概率分布之間的距離)的連接進(jìn)行合理化的。卡方距離核函數(shù)是最常用的可視化直方圖(袋)。參考文獻(xiàn):Zhang, J. and Marszalek, M. and Lazebnik, S. and Schmid, C. Local features and kernels for classification of texture and object categories: A comprehensive study International Journal of Computer Vision 2007 https://research.microsoft.com/en-us/um/people/manik/projects/trade-off/papers/ZhangIJCV06.pdf

    文壹由“伴編輯器”提供技術(shù)支持

    ☆☆☆為方便大家查閱,小編已將scikit-learn學(xué)習(xí)路線專欄文章統(tǒng)一整理到公眾號(hào)底部菜單欄,同步更新中,關(guān)注公眾號(hào),點(diǎn)擊左下方“系列文章”,如圖:

    歡迎大家和我一起沿著scikit-learn文檔這條路線,一起鞏固機(jī)器學(xué)習(xí)算法基礎(chǔ)。(添加微信:mthler備注:sklearn學(xué)習(xí),一起進(jìn)【sklearn機(jī)器學(xué)習(xí)進(jìn)步群】開(kāi)啟打怪升級(jí)的學(xué)習(xí)之旅。)

    與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

    總結(jié)

    以上是生活随笔為你收集整理的sklearn svm如何选择核函数_使用python+sklearn实现成对度量、相关性和核函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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