多標籤學習的利器——MLkNN

一、 MLkNN是什麼

1、MLkNN全稱為Multi-Label k-Nearest Neighbor。它是一種基於kNN算法的多標籤分類算法。

2、其思想是將每個標籤看作一維空間,在這個N維空間中,將每個樣本看作一個點,儘可能保證樣本點與其所屬的N個標籤點的距離比離其它標籤點更近,從而將樣本分類。

3、MLkNN算法的主要思路是對每個標籤獨立運用k-NN算法確定該標籤的可能取值範圍。而對於每個標籤來說,所確定的可能取值範圍可以是任何子集。

二、 MLkNN的實現原理

1、首先,利用訓練數據建立一個多標籤模型。同時,構建一個詞典,其中包含了每個標籤的所有可能取值。


from skmultilearn.adapt import MLkNN
from sklearn.metrics import accuracy_score

model = MLkNN(k=20)
model.fit(X_train, y_train)
predictions = model.predict(X_test)
print("Accuracy = ", accuracy_score(y_test, predictions))

其中,k是最近鄰的數目。建模時需要輸入權重改變策略,有標籤計數、平等、對數等多種選項。

2、模型得出多個相似度值時,則取目標值最大的標籤作為預測的分類。


y_train_pred = model.predict_proba(X_train)
y_test_pred = model.predict_proba(X_test)

三、 MLkNN的優缺點

1、優點:
1.1 適用於訓練集的數據量較大,但標籤數相對不大的情況,例如文本分類、圖片標註等任務;
1.2 準確度較高,尤其針對單標籤,使得模型的泛化能力較好;
1.3 比起傳統機器學習算法,運行時間較短;
1.4 將訓練階段和測試階段的計算分開,可以並行計算,這使得算法的效率更高。

2、缺點:
2.1 MLkNN模型對數據集的特徵較為敏感,因此需要利用一些特徵選擇的方法來進行降維;
2.2 MLkNN的計算方式在訓練集非常大時,計算量較大;
2.3 對於標籤取值的不平衡情況,模型的表現較為糟糕,需要進行平衡處理。

四、 MLkNN的應用案例

1、文本分類:MLkNN主要應用於文本的多標籤分類。例如,為文章標註多個標籤,使其最終能夠被準確分類至目標標籤中。

2、音樂分類:利用MLkNN算法,對音樂集合進行分類,既可以從風格的角度劃分,也可以從情感色調的角度進行劃分。

3、視頻分類:針對大量的視頻標籤進行分類,例如對視頻屬性進行標註(如情感、性別、年齡、場景等)。


import numpy as np
from skmultilearn.dataset import load_dataset
from skmultilearn.model_selection import iterative_train_test_split
from skmultilearn.adapt import MLkNN
from sklearn.metrics import accuracy_score

X, y = load_dataset('scene')
X_train, y_train, X_test, y_test = iterative_train_test_split(X, y, test_size = 0.2)
model = MLkNN(k=20)
model.fit(X_train, y_train)
predictions = model.predict(X_test)
print("Accuracy = ", accuracy_score(y_test, predictions))

原創文章,作者:YDBK,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/136542.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
YDBK的頭像YDBK
上一篇 2024-10-04 00:16
下一篇 2024-10-04 00:16

相關推薦

  • Python刷課:優化學習體驗的利器

    Python刷課作為一種利用自動化技術優化學習體驗的工具已經被廣泛應用。它可以幫助用戶自動登錄、自動答題等,讓用戶在學習過程中可以更加專註於知識本身,提高效率,增加學習樂趣。 一、…

    編程 2025-04-29
  • lsw2u1:全能編程開發工程師的利器

    lsw2u1是一款多功能工具,可以為全能編程開發工程師提供便利的支持。本文將從多個方面對lsw2u1做詳細闡述,並給出對應代碼示例。 一、快速存取代碼段 在日常開發中,我們總會使用…

    編程 2025-04-29
  • Python條形圖添加數據標籤

    Python是一種多用途、高級、解釋型編程語言。它是一種動態類型語言,具有高級內置數據結構,支持面向對象編程、結構化編程和函數式編程方式。Python語言旨在簡化代碼的閱讀、編寫和…

    編程 2025-04-28
  • HBuilder2.0:一站式開發利器

    本文將從如下幾個方面對HBuilder2.0進行詳細闡述,幫助初學者快速了解並開始使用該工具: 一、簡介 HBuilder2.0是一個跨平台的HTML5集成開發工具。它綜合了編碼、…

    編程 2025-04-28
  • Python按標籤分類切分數據解析

    本文將為大家詳細介紹如何使用Python按標籤分類切分數據。如果您需要對數據進行分類處理,可以閱讀本文,並按照給出的例子運用到實際的項目之中。 一、按標籤分類切分數據的概念及應用場…

    編程 2025-04-28
  • Powersploit:安全評估與滲透測試的利器

    本文將重點介紹Powersploit,並給出相關的完整的代碼示例,幫助安全人員更好地運用Powersploit進行安全評估和滲透測試。 一、Powersploit簡介 Powers…

    編程 2025-04-28
  • JL Transaction – 實現分佈式事務管理的利器

    本文將為大家介紹JL Transaction,這是一款可以實現分佈式事務管理的開源事務框架,它可以幫助企業在分佈式環境下有效地解決事務的一致性問題,從而保障系統的穩定性和可靠性。 …

    編程 2025-04-28
  • 全自動股票交易軟件:實現自動交易賺取更多收益的利器

    全自動股票交易軟件是一款能夠幫助股票投資者實現自動交易,據此獲取更多收益的利器。本文將從多個方面詳細闡述該軟件的特點、優點、使用方法及相關注意事項,以期幫助讀者更好地了解和使用該軟…

    編程 2025-04-27
  • Python餅狀圖的標籤設置

    Python是一門功能強大的編程語言,可以進行各種數據可視化操作,其中餅狀圖是一種常用的圖表。在Python中,我們可以通過設置餅狀圖的標籤來實現更好的展示效果。本文將從多個方面對…

    編程 2025-04-27
  • 基於標籤文件管理

    本文將從文件管理的角度出發,深入探討基於標籤的文件管理。 一、標籤文件管理簡介 標籤文件管理即通過給文件打上標籤來進行分類和管理的方式。與傳統文件管理相比,標籤文件管理更加靈活方便…

    編程 2025-04-27

發表回復

登錄後才能評論