国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用Scikit-Learn實(shí)現(xiàn)多標(biāo)簽分類,助力機(jī)器學(xué)習(xí)

這篇具有很好參考價(jià)值的文章主要介紹了使用Scikit-Learn實(shí)現(xiàn)多標(biāo)簽分類,助力機(jī)器學(xué)習(xí)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

大家好,在機(jī)器學(xué)習(xí)任務(wù)中,分類是一種監(jiān)督學(xué)習(xí)方法,用于根據(jù)輸入數(shù)據(jù)預(yù)測標(biāo)簽。例如,我們想要根據(jù)歷史特征預(yù)測某人是否對銷售優(yōu)惠感興趣,通過使用可用的訓(xùn)練數(shù)據(jù)訓(xùn)練機(jī)器學(xué)習(xí)模型,可以對輸入數(shù)據(jù)執(zhí)行分類任務(wù)。

平常會遇到一些經(jīng)典分類任務(wù),例如二元分類(兩個(gè)標(biāo)簽)和多類分類(兩個(gè)以上標(biāo)簽)。在這種情況下,我們會訓(xùn)練分類器,模型會嘗試從所有可用標(biāo)簽中預(yù)測一個(gè)標(biāo)簽。用于分類的數(shù)據(jù)集類似于下面的圖像:

使用Scikit-Learn實(shí)現(xiàn)多標(biāo)簽分類,助力機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí)與深度學(xué)習(xí),機(jī)器學(xué)習(xí),scikit-learn,分類

上面的圖像顯示目標(biāo)(銷售優(yōu)惠)在二元分類中包含兩個(gè)標(biāo)簽,在多類分類中包含三個(gè)標(biāo)簽,模型會從可用特征中進(jìn)行訓(xùn)練,然后僅輸出一個(gè)標(biāo)簽。

多標(biāo)簽分類與二元或多類分類不同,在多標(biāo)簽分類中,我們不僅嘗試預(yù)測一個(gè)輸出標(biāo)簽,相反,多標(biāo)簽分類會嘗試預(yù)測盡可能多的適用于輸入數(shù)據(jù)的標(biāo)簽,輸出可以是從沒有標(biāo)簽到最大數(shù)量的可用標(biāo)簽。

多標(biāo)簽分類通常用于文本數(shù)據(jù)分類任務(wù),下面是一個(gè)多標(biāo)簽分類的示例數(shù)據(jù)集。

使用Scikit-Learn實(shí)現(xiàn)多標(biāo)簽分類,助力機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí)與深度學(xué)習(xí),機(jī)器學(xué)習(xí),scikit-learn,分類

在上面的示例中,假設(shè)文本1到文本5是可以歸類為四個(gè)類別的句子:事件、體育、流行文化和自然。通過上述訓(xùn)練數(shù)據(jù),多標(biāo)簽分類任務(wù)可以預(yù)測哪個(gè)標(biāo)簽適用于給定的句子。每個(gè)類別之間并不相互對立,因?yàn)樗鼈儾皇腔コ獾模幻總€(gè)標(biāo)簽可以被視為獨(dú)立的。

更詳細(xì)地說,我們可以看到文本1標(biāo)記為體育和流行文化,而文本2標(biāo)記為流行文化和自然。這表明每個(gè)標(biāo)簽是互斥的,多標(biāo)簽分類的預(yù)測輸出可以是沒有標(biāo)簽或同時(shí)包含所有標(biāo)簽。

有了上述介紹,接下來嘗試使用Scikit-Learn搭建多標(biāo)簽分類器。

使用Scikit-Learn進(jìn)行多標(biāo)簽分類

本文將使用Kaggle上公開可用的生物醫(yī)學(xué)PubMed多標(biāo)簽分類數(shù)據(jù)集,該數(shù)據(jù)集包含各種特征,但本文只使用abstractText特征和它們的MeSH分類(A:解剖學(xué),B:有機(jī)體,C:疾病等)。示例數(shù)據(jù)如下圖所示:

【生物醫(yī)學(xué)PubMed多標(biāo)簽分類數(shù)據(jù)集】:https://www.kaggle.com/datasets/owaiskhan9654/pubmed-multilabel-text-classification

使用Scikit-Learn實(shí)現(xiàn)多標(biāo)簽分類,助力機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí)與深度學(xué)習(xí),機(jī)器學(xué)習(xí),scikit-learn,分類

上述數(shù)據(jù)集表明,每篇論文都可以被分為多個(gè)類別,這就是多標(biāo)簽分類的案例。有了這個(gè)數(shù)據(jù)集,那么就可以使用Scikit-Learn建立多標(biāo)簽分類器,在訓(xùn)練模型之前,首先準(zhǔn)備好數(shù)據(jù)集。

import?pandas?as?pd
from?sklearn.feature_extraction.text?import?TfidfVectorizer

df?=?pd.read_csv('PubMed?Multi?Label?Text?Classification?Dataset?Processed.csv')
df?=?df.drop(['Title',?'meshMajor',?'pmid',?'meshid',?'meshroot'],?axis?=1)

X?=?df["abstractText"]
y?=?np.asarray(df[df.columns[1:]])

vectorizer?=?TfidfVectorizer(max_features=2500,?max_df=0.9)
vectorizer.fit(X)

在上面的代碼中,將文本數(shù)據(jù)轉(zhuǎn)換為TF-IDF表示,以便Scikit-Learn模型能夠接受訓(xùn)練數(shù)據(jù)。此外,為了簡化教程,本文跳過了預(yù)處理數(shù)據(jù)的步驟,例如刪除停頓詞。

數(shù)據(jù)轉(zhuǎn)換完成后,我們將數(shù)據(jù)集分割為訓(xùn)練集和測試集。

from?sklearn.model_selection?import?train_test_split
X_train,?X_test,?y_train,?y_test?=?train_test_split(X,?y,?test_size=0.2,?random_state=101)
??
X_train_tfidf?=?vectorizer.transform(X_train)
X_test_tfidf?=?vectorizer.transform(X_test)

完成所有準(zhǔn)備工作后,我們將開始訓(xùn)練多標(biāo)簽分類器。在Scikit-Learn中,我們將使用MultiOutputClassifier對象來訓(xùn)練多標(biāo)簽分類器模型。該模型背后的策略是為每個(gè)標(biāo)簽訓(xùn)練一個(gè)分類器,每個(gè)標(biāo)簽都有自己的分類器。

在這個(gè)示例中,我們將使用邏輯回歸,并使用MultiOutputClassifier將其擴(kuò)展到所有標(biāo)簽。

from?sklearn.multioutput?import?MultiOutputClassifier
from?sklearn.linear_model?import?LogisticRegression

clf?=?MultiOutputClassifier(LogisticRegression()).fit(X_train_tfidf,?y_train)

我們可以更改模型并調(diào)整傳遞給MultiOutputClasiffier的模型參數(shù),因此請根據(jù)自己的要求進(jìn)行管理。訓(xùn)練完成后,使用模型預(yù)測測試數(shù)據(jù)。

prediction?=?clf.predict(X_test_tfidf)
prediction

使用Scikit-Learn實(shí)現(xiàn)多標(biāo)簽分類,助力機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí)與深度學(xué)習(xí),機(jī)器學(xué)習(xí),scikit-learn,分類

預(yù)測結(jié)果是每個(gè)MeSH類別的標(biāo)簽數(shù)組,每一行代表一個(gè)句子,每一列代表一個(gè)標(biāo)簽。

最后,我們需要對多標(biāo)簽分類器進(jìn)行評估,可以使用準(zhǔn)確率指標(biāo)來評估模型。

from?sklearn.metrics?import?accuracy_score
print('Accuracy?Score:?',?accuracy_score(y_test,?prediction))****

準(zhǔn)確率得分為0.145。

準(zhǔn)確度得分結(jié)果為0.145,這表明該模型只能在不到14.5%的情況下能預(yù)測出準(zhǔn)確的標(biāo)簽組合。然而,對于多標(biāo)簽預(yù)測評估來說,準(zhǔn)確率得分存在不足。準(zhǔn)確率得分需要每個(gè)句子的所有標(biāo)簽都出現(xiàn)在準(zhǔn)確的位置上,否則就會被認(rèn)為是錯(cuò)誤的。

例如,第一行預(yù)測與測試數(shù)據(jù)之間僅有一個(gè)標(biāo)簽的差異。

使用Scikit-Learn實(shí)現(xiàn)多標(biāo)簽分類,助力機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí)與深度學(xué)習(xí),機(jī)器學(xué)習(xí),scikit-learn,分類

對于準(zhǔn)確率得分來說,這將被認(rèn)為是錯(cuò)誤的預(yù)測,因?yàn)闃?biāo)簽組合不同,這就是模型具有較低度量分?jǐn)?shù)的原因。

為了解決這個(gè)問題,我們必須評估標(biāo)簽的預(yù)測而不是它們的組合。在這種情況下,我們可以使用Hamming Loss評估指標(biāo)。漢明損失通過將錯(cuò)誤預(yù)測與總標(biāo)簽數(shù)的比例來計(jì)算,因?yàn)闈h明損失是一種損失函數(shù),得分越低越好(0表示沒有錯(cuò)誤預(yù)測,1表示所有預(yù)測都錯(cuò)誤)。

from?sklearn.metrics?import?hamming_loss
print('Hamming?Loss:?',?round(hamming_loss(y_test,?prediction),2))

漢明損失為0.13。

我們的多標(biāo)簽分類器Hamming Loss模型為0.13,這意味著我們的模型在獨(dú)立情況下約有13%的錯(cuò)誤預(yù)測,也就是說每個(gè)標(biāo)簽的預(yù)測可能有13%的錯(cuò)誤。

總結(jié)

多標(biāo)簽分類是一種機(jī)器學(xué)習(xí)任務(wù),其輸出可以是沒有標(biāo)簽或給定輸入數(shù)據(jù)的所有可能標(biāo)簽。這與二元或多類分類不同,其中標(biāo)簽輸出是相互排斥的。

使用Scikit-Learn的MultiOutputClassifier,我們可以開發(fā)多標(biāo)簽分類器,為每個(gè)標(biāo)簽訓(xùn)練一個(gè)分類器。在模型評估方面,最好使用Hamming Loss指標(biāo),因?yàn)闇?zhǔn)確率得分可能無法正確反映整體情況。

?文章來源地址http://www.zghlxwxcb.cn/news/detail-666011.html

到了這里,關(guān)于使用Scikit-Learn實(shí)現(xiàn)多標(biāo)簽分類,助力機(jī)器學(xué)習(xí)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 機(jī)器學(xué)習(xí)筆記 - 基于Scikit-Learn的各種分類器進(jìn)行分類并比較

    ????????scikit-learn是基于python語言構(gòu)建機(jī)器學(xué)習(xí)應(yīng)用程序的最佳庫之一。簡單易用,并且它有很多示例和教程。除了監(jiān)督式機(jī)器學(xué)習(xí)(分類和回歸)外,它還可用于聚類、降維、特征提取和工程以及數(shù)據(jù)預(yù)處理。該接口在所有這些方法上都是一致的,因此它不僅易于使用,

    2024年02月09日
    瀏覽(23)
  • Python案例|使用Scikit-learn實(shí)現(xiàn)客戶聚類模型

    Python案例|使用Scikit-learn實(shí)現(xiàn)客戶聚類模型

    聚類是一種經(jīng)典的無監(jiān)督學(xué)習(xí)方法,無監(jiān)督學(xué)習(xí)的目標(biāo)是通過對無標(biāo)記訓(xùn)練樣本的學(xué)習(xí),發(fā)掘和揭示數(shù)據(jù)集本身潛在的結(jié)構(gòu)與規(guī)律,即不依賴于訓(xùn)練數(shù)據(jù)集的類標(biāo)記信息。聚類試圖將數(shù)據(jù)集劃分為若干個(gè)互不相交的類簇,從而每個(gè)簇對應(yīng)一個(gè)潛在的類別。 聚類算法體現(xiàn)了“物

    2024年02月15日
    瀏覽(22)
  • 機(jī)器學(xué)習(xí)-決策樹-分類-汽車數(shù)據(jù)集-fetch_openml python scikit-learn

    機(jī)器學(xué)習(xí)-決策樹-分類-汽車數(shù)據(jù)集-fetch_openml python scikit-learn

    在這個(gè)使用決策樹的分類任務(wù)中,將使用OpenML提供的汽車數(shù)據(jù)集來預(yù)測給定汽車信息的汽車可接受性。將使用Sklearn ’ fetch_openml \\\'函數(shù)加載它。 此次獲取的數(shù)據(jù)的版本是2。在數(shù)據(jù)集的版本1中,目標(biāo)類有4個(gè)類(unacc, acc, good, vgood),但在第二個(gè)版本中,大多數(shù)類是Positive§,而其

    2024年02月22日
    瀏覽(27)
  • scikit-learn實(shí)現(xiàn)線性回歸

    scikit-learn實(shí)現(xiàn)線性回歸

    要學(xué)習(xí)scikit-learn,我們必須要到scikit-clearn的官網(wǎng)中去查看公式和原理 scikit-learn 官網(wǎng) scikit-learn 中文社區(qū) 進(jìn)入官網(wǎng)一以后我們找到回歸,然后再有監(jiān)督學(xué)習(xí)中找到線性模型 公式: L2范數(shù)是指向量中每個(gè)元素的平方和的平方根。在數(shù)學(xué)中,L2范數(shù)也稱為歐幾里得范數(shù),通常用 ∣

    2024年02月04日
    瀏覽(16)
  • 交叉驗(yàn)證以及scikit-learn實(shí)現(xiàn)

    交叉驗(yàn)證以及scikit-learn實(shí)現(xiàn)

    交叉驗(yàn)證既可以解決數(shù)據(jù)集的數(shù)據(jù)量不夠大問題,也可以解決參數(shù)調(diào)優(yōu)的問題。 主要有三種方式: 簡單交叉驗(yàn)證(HoldOut檢驗(yàn))、 k折交叉驗(yàn)證(k-fold交叉驗(yàn)證)、 自助法。 本文僅針對k折交叉驗(yàn)證做詳細(xì)解釋。 方法 :將原始數(shù)據(jù)集隨機(jī)劃分成訓(xùn)練集和驗(yàn)證集兩部分。比如說

    2024年02月04日
    瀏覽(25)
  • Python案例|使用Scikit-learn進(jìn)行房屋租金回歸分析

    Python案例|使用Scikit-learn進(jìn)行房屋租金回歸分析

    回歸分析是一種預(yù)測性的建模技術(shù),研究的是因變量(目標(biāo))和自變量(預(yù)測器)之間的關(guān)系?;貧w分析是建模和分析數(shù)據(jù)的重要工具。比如預(yù)測股票價(jià)格走勢、預(yù)測居民收入、預(yù)測微博互動量等等。常用的有線性回歸、邏輯回歸、嶺回歸等。本文主要使用線性回歸。 本文使

    2024年02月15日
    瀏覽(26)
  • AI機(jī)器學(xué)習(xí)實(shí)戰(zhàn) | 使用 Python 和 scikit-learn 庫進(jìn)行情感分析

    AI機(jī)器學(xué)習(xí)實(shí)戰(zhàn) | 使用 Python 和 scikit-learn 庫進(jìn)行情感分析

    專欄集錦,大佬們可以收藏以備不時(shí)之需 Spring Cloud實(shí)戰(zhàn)專欄:https://blog.csdn.net/superdangbo/category_9270827.html Python 實(shí)戰(zhàn)專欄:https://blog.csdn.net/superdangbo/category_9271194.html Logback 詳解專欄:https://blog.csdn.net/superdangbo/category_9271502.html tensorflow專欄:https://blog.csdn.net/superdangbo/category_869

    2024年02月05日
    瀏覽(24)
  • 如何在spark中使用scikit-learn和tensorflow等第三方python包

    首先我們用conda包管理工具對我們需要的python包進(jìn)行虛擬環(huán)境創(chuàng)建: 下面是對每個(gè)參數(shù)的解釋(??這里讓chatgpt給出的解釋,自己就不手打了??) conda create: 這是創(chuàng)建Conda環(huán)境的命令。 -n python37: -n參數(shù)后跟著你想要創(chuàng)建的環(huán)境的名稱,這里是python37。你可以將環(huán)境名稱替換為你

    2024年02月08日
    瀏覽(16)
  • Scikit-learn:全面概述

    在機(jī)器學(xué)習(xí)領(lǐng)域,Python已經(jīng)成為一種重要的編程語言,這得益于其簡潔、多功能和豐富的庫。在這些庫中,Scikit-learn作為其中最受歡迎和強(qiáng)大的之一,脫穎而出。它提供了各種工具、算法和功能,使用戶能夠輕松地進(jìn)行各種機(jī)器學(xué)習(xí)任務(wù)。在本文中,我們將探索Scikit-learn的主

    2024年02月10日
    瀏覽(17)
  • 【scikit-learn基礎(chǔ)】--概述

    Scikit-learn 是一個(gè)基于 Python 的開源機(jī)器學(xué)習(xí)庫,它提供了大量的機(jī)器學(xué)習(xí)算法和工具,方便用戶進(jìn)行數(shù)據(jù)挖掘、分析和預(yù)測。 Scikit-learn 是基于另外兩個(gè)知名的庫 Scipy 和 Numpy 的, 關(guān)于 Scipy 和 Numpy 等庫,之前的系列文章中有介紹: Scipy 基礎(chǔ)系列 Numpy 基礎(chǔ)系列 自從 AlphaGo 再度

    2024年02月05日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包