丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能開(kāi)發(fā)者 正文
發(fā)私信給AI研習(xí)社-譯站
發(fā)送

0

用于可解釋機(jī)器學(xué)習(xí)的 Python 庫(kù)

本文作者: AI研習(xí)社-譯站 2020-08-18 18:17
導(dǎo)語(yǔ):由于對(duì)人工智能偏見(jiàn)的擔(dān)心日益凸顯,從業(yè)者解釋模型產(chǎn)出的預(yù)測(cè)結(jié)果的能力以及解釋模型自身運(yùn)作機(jī)制的能力變的越來(lái)越重要。

用于可解釋機(jī)器學(xué)習(xí)的 Python 庫(kù)

字幕組雙語(yǔ)原文:用于可解釋機(jī)器學(xué)習(xí)的 Python 庫(kù)

英語(yǔ)原文:Python Libraries for Interpretable Machine Learning

翻譯:雷鋒字幕組(ZeroJ



用于可解釋機(jī)器學(xué)習(xí)的 Python 庫(kù)

由于對(duì)人工智能偏見(jiàn)的擔(dān)心日益凸顯,從業(yè)者解釋模型產(chǎn)出的預(yù)測(cè)結(jié)果的能力以及解釋模型自身運(yùn)作機(jī)制的能力變的越來(lái)越重要。幸運(yùn)的是,已經(jīng)有許多python工具集被開(kāi)發(fā)出來(lái),用以解決上述問(wèn)題。下文我將對(duì)現(xiàn)有4個(gè)建立的比較完善的翻譯和解釋機(jī)器學(xué)習(xí)模型的工具包做簡(jiǎn)要的指導(dǎo)性描述。

這些工具包都可以通過(guò)pip來(lái)進(jìn)行安裝,擁有完善的文檔,并且強(qiáng)調(diào)通過(guò)可視化來(lái)提升可解釋性。

yellowbrick 

這個(gè)工具包本質(zhì)上,是scikit-learn的一個(gè)擴(kuò)展,提供了一些非常實(shí)用且好看的機(jī)器學(xué)習(xí)模型可視化工具。`visualiser`對(duì)象是核心接口,是一個(gè)scikit-learn估計(jì)器,所以如果你之前熟悉scikit-learn的工作流程,那么將對(duì)此非常熟悉。

這個(gè)可視化工具覆蓋了模型選擇,特征重要性和模型性能分析等方面。

讓我們看幾個(gè)簡(jiǎn)短的例子。

該工具包可以通過(guò)pip安裝,

pip install yellowbrick

為了展示工具包中的一些特性,我們將利用scikit-learn中的紅酒識(shí)別數(shù)據(jù)集。這個(gè)數(shù)據(jù)集包含13個(gè)特征以及3個(gè)目標(biāo)類(lèi)別??梢酝ㄟ^(guò)scikit-learn直接加載。在下面的代碼里我引入數(shù)據(jù)集,并把轉(zhuǎn)換成pandas dataframe。數(shù)據(jù)集可以直接被用來(lái)訓(xùn)練模型,并不需要其他的數(shù)據(jù)處理。

import pandas as pd

from sklearn import datasets

wine_data = datasets.load_wine()

df_wine = pd.DataFrame(wine_data.data,columns=wine_data.feature_names)

df_wine['target'] = pd.Series(wine_data.target)

利用scikit-learn進(jìn)一步將數(shù)據(jù)分為測(cè)試集合和訓(xùn)練集。

import pandas as pd

from sklearn import datasets

wine_data = datasets.load_wine()

df_wine = pd.DataFrame(wine_data.data,columns=wine_data.feature_names)

df_wine['target'] = pd.Series(wine_data.target)

接下來(lái),我們用yellowbrick的visualiser觀(guān)察特征之間的相關(guān)性。

import pandas as pd

from sklearn import datasets

wine_data = datasets.load_wine()

df_wine = pd.DataFrame(wine_data.data,columns=wine_data.feature_names)

df_wine['target'] = pd.Series(wine_data.target)


用于可解釋機(jī)器學(xué)習(xí)的 Python 庫(kù)

現(xiàn)在,我們擬合一個(gè)隨機(jī)森林分類(lèi)器,并通過(guò)另一個(gè)visualiser評(píng)價(jià)其性能。

from yellowbrick.classifier import ClassificationReport

from sklearn.ensemble import RandomForestClassifier

model =  RandomForestClassifier()

visualizer = ClassificationReport(model, size=(1080, 720))

visualizer.fit(X_train, y_train)

visualizer.score(X_test, y_test)

visualizer.poof()


用于可解釋機(jī)器學(xué)習(xí)的 Python 庫(kù)

ELI5

ELI5是另一個(gè)可視化工具包,在模型機(jī)器學(xué)習(xí)模型調(diào)試和解釋其產(chǎn)出的預(yù)測(cè)結(jié)果方面非常有用。它能夠同大多數(shù)通用的python機(jī)器學(xué)習(xí)工具包一起使用,包括scikit-learn和XGBoost,以及Keras。

讓我們用ELI5來(lái)觀(guān)察一下上面我們訓(xùn)練的模型的特征重要性。

import eli5

eli5.show_weights(model, feature_names = X.columns.tolist())


用于可解釋機(jī)器學(xué)習(xí)的 Python 庫(kù)

默認(rèn)的,`show_weights`方法采用GAIN來(lái)計(jì)算權(quán)重,但你也可以傳入其他`importance_type`來(lái)控制特征重要性的計(jì)算。

也可以通過(guò)`show_prediction`來(lái)觀(guān)察某一個(gè)樣本的預(yù)測(cè)結(jié)果的原因。

from eli5 import show_predictionshow_prediction(model, X_train.iloc[1], feature_names = X.columns.tolist(), 

                show_feature_values=True)


用于可解釋機(jī)器學(xué)習(xí)的 Python 庫(kù)

LIME

LIME(模型無(wú)關(guān)局部可解釋?zhuān)┦且粋€(gè)用來(lái)解釋模型做出的預(yù)測(cè)的工具包。LIME支持對(duì)多種分類(lèi)器的單個(gè)樣本預(yù)測(cè)進(jìn)行解釋?zhuān)⑶以С謘cikit-learn。

下面讓我們用LIME對(duì)上述我們訓(xùn)練的模型的一些預(yù)測(cè)進(jìn)行解釋。

LIME可以用pip進(jìn)行安裝

pip install lime

首先我們構(gòu)建explainer,它通過(guò)訓(xùn)練數(shù)據(jù)集數(shù)組,模型中用到的特征名稱(chēng)和目標(biāo)變量的類(lèi)別名稱(chēng)作為初始化參數(shù)。

import lime.lime_tabular

explainer = lime.lime_tabular.LimeTabularExplainer(X_train.values,                                            feature_names=X_train.columns.values.tolist(),                                        class_names=y_train.unique())

接下來(lái),我們創(chuàng)建一個(gè)lambda函數(shù),它表示用模型預(yù)測(cè)一個(gè)樣本。詳見(jiàn)這個(gè)優(yōu)秀的,更有深度的LIME教程。

predict_fn = lambda x: model.predict_proba(x).astype(float)

隨后,我們利用explainer解釋指定樣本的預(yù)測(cè)結(jié)果。其結(jié)果如下。LIME通過(guò)可視化的結(jié)果,展示特征如果對(duì)得到的預(yù)測(cè)結(jié)果產(chǎn)生影響。

exp = explainer.explain_instance(X_test.values[0], predict_fn, num_features=6)

exp.show_in_notebook(show_all=False)


用于可解釋機(jī)器學(xué)習(xí)的 Python 庫(kù)

MLxtend

這個(gè)工具包包含一系列機(jī)器學(xué)習(xí)可用的工具函數(shù)。包括通過(guò)stacking和voting構(gòu)建的分類(lèi)器,模型的評(píng)估,特征的提取、特征工程和可視化。除了該工具包的文檔,這篇論文也是理解工具包更多細(xì)節(jié)的好資源。

下面讓我們利用MLxtend來(lái)比較Ensemble后的分類(lèi)器的分類(lèi)邊界與組成他的子分類(lèi)器的分類(lèi)邊界有什么不同。

同樣MLxtend也可以通過(guò)pip安裝。

pip install mlxtend

引入一些工具包,

from mlxtend.plotting import plot_decision_regions

from mlxtend.classifier import EnsembleVoteClassifier

import matplotlib.gridspec as gridspec

import itertools

from sklearn import model_selection

from sklearn.linear_model import LogisticRegression

from sklearn.naive_bayes import GaussianNB

from sklearn.ensemble import RandomForestClassifier

下面的可視化工具一次只能接受兩個(gè)特征作為輸入,所以我們創(chuàng)建了數(shù)組['proline', 'color_intensity']。因?yàn)檫@兩個(gè)特征在上述利用ELI5分析時(shí),具有最高的特征重要性。

X_train_ml = X_train[['proline', 'color_intensity']].values

y_train_ml = y_train.values

接下來(lái),我們創(chuàng)建一些分類(lèi)器,并在訓(xùn)練數(shù)據(jù)上進(jìn)行擬合,通過(guò)MLxtend可視化他們的決策邊界。輸出來(lái)自下面的代碼。

clf1 = LogisticRegression(random_state=1)

clf2 = RandomForestClassifier(random_state=1)

clf3 = GaussianNB()

eclf = EnsembleVoteClassifier(clfs=[clf1, clf2, clf3], weights=[1,1,1])

value=1.5

width=0.75

gs = gridspec.GridSpec(2,2)

fig = plt.figure(figsize=(10,8))

labels = ['Logistic Regression', 'Random Forest', 'Naive Bayes', 'Ensemble']

for clf, lab, grd in zip([clf1, clf2, clf3, eclf],

                         labels,

                         itertools.product([0, 1], repeat=2)):

                         

    clf.fit(X_train_ml, y_train_ml)

    ax = plt.subplot(gs[grd[0], grd[1]])

    fig = plot_decision_regions(X=X_train_ml, y=y_train_ml, clf=clf)

    plt.title(lab)


用于可解釋機(jī)器學(xué)習(xí)的 Python 庫(kù)

以上絕對(duì)不是模型可解釋和可視化工具包的完整列表。這篇博文羅列了包含其他有用的工具包的列表,值得一試。

感謝閱讀!


雷鋒字幕組是一個(gè)由 AI 愛(ài)好者組成的翻譯團(tuán)隊(duì),匯聚五百多位志愿者的力量,分享最新的海外AI資訊,交流關(guān)于人工智能技術(shù)領(lǐng)域的行業(yè)變革與技術(shù)創(chuàng)新的見(jiàn)解。

團(tuán)隊(duì)成員有大數(shù)據(jù)專(zhuān)家、算法工程師、圖像處理工程師、產(chǎn)品經(jīng)理、產(chǎn)品運(yùn)營(yíng)、IT咨詢(xún)?nèi)恕⒃谛熒恢驹刚邆儊?lái)自IBM、AVL、Adobe、阿里、百度等知名企業(yè),北大、清華、港大、中科院、南卡羅萊納大學(xué)、早稻田大學(xué)等海內(nèi)外高校研究所。

如果,你也是位熱愛(ài)分享的AI愛(ài)好者。歡迎與雷鋒字幕組一起,學(xué)習(xí)新知,分享成長(zhǎng)。

用于可解釋機(jī)器學(xué)習(xí)的 Python 庫(kù)

雷鋒網(wǎng)雷鋒網(wǎng)

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知

用于可解釋機(jī)器學(xué)習(xí)的 Python 庫(kù)

分享:
相關(guān)文章

知情人士

AI研習(xí)社(yanxishe.com)譯站頻道,傳播前沿人工智能知識(shí),讓語(yǔ)言不再成為學(xué)習(xí)知識(shí)的門(mén)檻。(原雷鋒字幕組)
當(dāng)月熱門(mén)文章
最新文章
請(qǐng)?zhí)顚?xiě)申請(qǐng)人資料
姓名
電話(huà)
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶(hù)安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)