第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在形狀中繪制錯(cuò)誤分類(lèi)的樣本?

如何在形狀中繪制錯(cuò)誤分類(lèi)的樣本?

莫回?zé)o 2023-10-25 10:28:32
我有一個(gè)基因數(shù)據(jù)集,其引起疾病的可能性得分在 0 到 1 之間(已知得分為 1 的基因會(huì)引起疾病,得分為 0.74 的基因可能會(huì)引起疾病)。我正在嘗試建立一個(gè)機(jī)器學(xué)習(xí)模型來(lái)預(yù)測(cè)回歸分類(lèi)中新基因的疾病評(píng)分。我想查看已知疾病基因但得分較低的基因的形狀決策圖(例如,得分為 1 的基因,但我的模型得分低于 0.8)。我正在努力將這些基因組合在一起進(jìn)行繪圖。我的數(shù)據(jù)如下所示:X:Index   Feature1  Feature2   ... FeatureNGene1     1           0.2          10Gene2     1           0.1          7Gene3     0           0.3          10#index is actually the index and not a columnY:Score10.60.4我運(yùn)行帶有嵌套交叉驗(yàn)證的 xgboost 回歸器,查看 MSE、預(yù)測(cè)的 r2,并繪制觀察值與預(yù)期值的關(guān)系圖。我可以在觀察到的與預(yù)期的圖中看到,Y 中得分為 1 的基因有許多模型預(yù)測(cè)的低分,我想了解為什么模型使用 shap 來(lái)做到這一點(diǎn)。不幸的是,我無(wú)法提供示例數(shù)據(jù)。我正在嘗試調(diào)整為標(biāo)簽分類(lèi)給出的示例 shap 代碼:import shapxgbr = xgboost.XGBRegressor()xgbr.fit(X_train, Y_train)select = range(8) #I have 8 features after feature selection with BorutaShapfeatures = X.iloc[select]features_display = X.loc[features.index]explainer = shap.TreeExplainer(xgbr)expected_value = explainer.expected_value#Example code from https://slundberg.github.io/shap/notebooks/plots/decision_plot.html: y_pred = xgbr.predict(X) y_pred = (shap_values.sum(1) + expected_value) > 0misclassified = y_pred != y_test[select]shap.decision_plot(expected_value, shap_values, features_display, link='logit', highlight=misclassified)我該如何選擇,y_pred以便預(yù)測(cè)/基因本應(yīng)為 1,但實(shí)際上低于 0.8(或任何低數(shù)字)?編輯:為了回應(yīng)給定的答案,我嘗試過(guò):explainer = shap.TreeExplainer(xgbr)shap_values = explainer.shap_values(X_test)y_pred = xgbr.predict(X_test)m = (y_pred <= 0.5) & (Y_test == 1)shap.initjs()shap.decision_plot(explainer.expected_value, shap_values,  X_test[m],  return_objects=True)它運(yùn)行但m長(zhǎng)度為 171(我的 Y_test 數(shù)據(jù)中的全部行數(shù)),然后該圖繪制了它看起來(lái)像的所有 171 - 而且我從查看數(shù)據(jù)知道應(yīng)該只有一個(gè)基因 <= 0.5 并且但實(shí)際上得分為 1。
查看完整描述

2 回答

?
慕尼黑5688855

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊

首先,你提到在回歸分類(lèi)中預(yù)測(cè)新基因的疾病評(píng)分,你是什么意思?輸出似乎是二進(jìn)制的,0或1,因此這是一個(gè)二進(jìn)制分類(lèi)問(wèn)題。您應(yīng)該改用xgboost's 分類(lèi)器。更新:讓我們根據(jù)評(píng)論假設(shè)一個(gè)回歸問(wèn)題來(lái)模擬您的情況。盡管對(duì)于下面的示例,我們應(yīng)該設(shè)置'objective':'multi:softmax'為輸出實(shí)際標(biāo)簽。


根據(jù)您的問(wèn)題,您似乎要做的就是在那些未正確預(yù)測(cè)的樣本上索引測(cè)試集,并分析誤導(dǎo)性的特征,這具有一定的意義。


讓我們用一些示例數(shù)據(jù)集重現(xiàn)您的問(wèn)題:


from sklearn.datasets import load_iris


from sklearn.model_selection import train_test_split

import shap

import xgboost


X,y = shap.datasets.iris()

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)


model = xgboost.train(params={"learning_rate": 0.01}, 

                      dtrain=xgboost.DMatrix(X_train, label=y_train), 

                      num_boost_round =100)

使用整個(gè)測(cè)試集的 SHAP 圖非常簡(jiǎn)單。舉個(gè)force_plot例子:


explainer = shap.TreeExplainer(model)

shap_values = explainer.shap_values(X_test)


shap.initjs()

shap.force_plot(explainer.expected_value, shap_values, X_test)

https://img1.sycdn.imooc.com/65387d890001b6f108880363.jpg

現(xiàn)在,如果我們想對(duì)錯(cuò)誤分類(lèi)的樣本執(zhí)行相同的操作,我們需要查看輸出概率。由于 iris 數(shù)據(jù)集有多個(gè)類(lèi),假設(shè)我們想要可視化force_plot那些應(yīng)該分類(lèi)為 的樣本2,但我們有一個(gè)輸出值如下1.7:


y_pred = model.predict(xgboost.DMatrix(X_test))

m = (y_pred <= 1.7) & (y_test == 2)

現(xiàn)在我們使用掩碼對(duì)集合執(zhí)行布爾索引X_test,并更新shap_values:


shap.initjs()

c= explainer.shap_values(X_test[m])

shap.force_plot(explainer.expected_value, shap_values, X_test[m])

https://img1.sycdn.imooc.com/65387d980001cd5708780362.jpg

這告訴我們,花瓣的長(zhǎng)度和寬度主要將回歸推向更高的值。因此,它們可能是在錯(cuò)誤分類(lèi)中發(fā)揮主要作用的變量。


同樣,對(duì)于一個(gè)decision_plot:


shap.decision_plot(explainer.expected_value, shap_values, 

                   X_test[m], feature_order='hclust', 

                   return_objects=True)

https://img1.sycdn.imooc.com/65387da50001edf306150210.jpg

查看完整回答
反對(duì) 回復(fù) 2023-10-25
?
拉莫斯之舞

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊

由于我沒(méi)有您的數(shù)據(jù)集,因此無(wú)法檢查代碼,但這里的一些想法可能會(huì)為您指明方向。


看來(lái)你沒(méi)有訓(xùn)練你的回歸者。應(yīng)該是像線(xiàn)一樣


xgbr = xgboost.XGBRegressor()

xgbr.train(X, Y)

現(xiàn)在你可以使用了xgbr.predict(X);)


您還需要培訓(xùn)解釋員:


explainer = shap.TreeExplainer(xgbr)

with warnings.catch_warnings():

     warnings.simplefilter("ignore")

     sh = explainer.shap_values(X)

現(xiàn)在您可以選擇值:


misclassified = (y_pred <= 0.7) & (Y == 1)

shap.decision_plot(expected_value, sh, features_display, link='logit', highlight=misclassified)

在使用之前,shap我建議您檢查回歸器對(duì)數(shù)據(jù)的擬合程度。因此,為此我建議您將部分?jǐn)?shù)據(jù)用于測(cè)試,而不是在訓(xùn)練中使用它。然后,您可以通過(guò)計(jì)算和比較測(cè)試集和訓(xùn)練集的 MSE 來(lái)評(píng)估擬合優(yōu)度。差異越大,預(yù)測(cè)器的表現(xiàn)就越差。


查看完整回答
反對(duì) 回復(fù) 2023-10-25
  • 2 回答
  • 0 關(guān)注
  • 135 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)