偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

新聞 機器學(xué)習(xí)
由于對人工智能偏見的擔心日益凸顯,從業(yè)者解釋模型產(chǎn)出的預(yù)測結(jié)果的能力以及解釋模型自身運作機制的能力變的越來越重要。

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

本文轉(zhuǎn)自雷鋒網(wǎng),如需轉(zhuǎn)載請至雷鋒網(wǎng)官網(wǎng)申請授權(quán)。

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

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

yellowbrick 

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

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

讓我們看幾個簡短的例子。

該工具包可以通過pip安裝,

  1. pip install yellowbrick 

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

  1. import pandas as pd 
  2.  
  3. from sklearn import datasets 
  4.  
  5. wine_data = datasets.load_wine() 
  6.  
  7. df_wine = pd.DataFrame(wine_data.data,columns=wine_data.feature_names) 
  8.  
  9. df_wine['target'] = pd.Series(wine_data.target) 

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

 

  1. import pandas as pd 
  2.  
  3. from sklearn import datasets 
  4.  
  5. wine_data = datasets.load_wine() 
  6.  
  7. df_wine = pd.DataFrame(wine_data.data,columns=wine_data.feature_names) 
  8.  
  9. df_wine['target'] = pd.Series(wine_data.target) 

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

  1. import pandas as pd 
  2.  
  3. from sklearn import datasets 
  4.  
  5. wine_data = datasets.load_wine() 
  6.  
  7. df_wine = pd.DataFrame(wine_data.data,columns=wine_data.feature_names) 
  8.  
  9. df_wine['target'] = pd.Series(wine_data.target) 

 

現(xiàn)在,我們擬合一個隨機森林分類器,并通過另一個visualiser評價其性能。

  1. from yellowbrick.classifier import ClassificationReport 
  2.  
  3. from sklearn.ensemble import RandomForestClassifier 
  4.  
  5. model =  RandomForestClassifier() 
  6.  
  7. visualizer = ClassificationReport(model, size=(1080720)) 
  8.  
  9. visualizer.fit(X_train, y_train) 
  10.  
  11. visualizer.score(X_test, y_test) 
  12.  
  13. visualizer.poof() 

 

ELI5

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

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

  1. import eli5 
  2.  
  3. eli5.show_weights(model, feature_names = X.columns.tolist()) 

默認的,`show_weights`方法采用GAIN來計算權(quán)重,但你也可以傳入其他`importance_type`來控制特征重要性的計算。用于可解釋機器學(xué)習(xí)的 Python 庫

也可以通過`show_prediction`來觀察某一個樣本的預(yù)測結(jié)果的原因。

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

LIME

LIME(模型無關(guān)局部可解釋)是一個用來解釋模型做出的預(yù)測的工具包。LIME支持對多種分類器的單個樣本預(yù)測進行解釋,并且原生支持scikit-learn。

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

LIME可以用pip進行安裝

  1. pip install lime 

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

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

接下來,我們創(chuàng)建一個lambda函數(shù),它表示用模型預(yù)測一個樣本。詳見這個優(yōu)秀的,更有深度的LIME教程。首先我們構(gòu)建explainer,它通過訓(xùn)練數(shù)據(jù)集數(shù)組,模型中用到的特征名稱和目標變量的類別名稱作為初始化參數(shù)。

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

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

  1. exp = explainer.explain_instance(X_test.values[0], predict_fn, num_features=6
  2.  
  3. exp.show_in_notebook(show_all=False) 

MLxtend

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

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

同樣MLxtend也可以通過pip安裝。

  1. pip install mlxtend 

引入一些工具包,

  1. from mlxtend.plotting import plot_decision_regions 
  2.  
  3. from mlxtend.classifier import EnsembleVoteClassifier 
  4.  
  5. import matplotlib.gridspec as gridspec 
  6.  
  7. import itertools 
  8.  
  9. from sklearn import model_selection 
  10.  
  11. from sklearn.linear_model import LogisticRegression 
  12.  
  13. from sklearn.naive_bayes import GaussianNB 
  14.  
  15. from sklearn.ensemble import RandomForestClassifier 

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

  1. X_train_ml = X_train[['proline''color_intensity']].values 
  2.  
  3. y_train_ml = y_train.values 

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

  1. clf1 = LogisticRegression(random_state=1
  2.  
  3. clf2 = RandomForestClassifier(random_state=1
  4.  
  5. clf3 = GaussianNB() 
  6.  
  7. eclf = EnsembleVoteClassifier(clfs=[clf1, clf2, clf3], weights=[1,1,1]) 
  8.  
  9. value=1.5 
  10.  
  11. width=0.75 
  12.  
  13. gs = gridspec.GridSpec(2,2
  14.  
  15. fig = plt.figure(figsize=(10,8)) 
  16.  
  17. labels = ['Logistic Regression''Random Forest''Naive Bayes''Ensemble'
  18.  
  19. for clf, lab, grd in zip([clf1, clf2, clf3, eclf], 
  20.  
  21.                          labels, 
  22.  
  23.                          itertools.product([01], repeat=2)): 
  24.  
  25.                           
  26.  
  27.     clf.fit(X_train_ml, y_train_ml) 
  28.  
  29.     ax = plt.subplot(gs[grd[0], grd[1]]) 
  30.  
  31.     fig = plot_decision_regions(X=X_train_ml, y=y_train_ml, clf=clf) 
  32.  
  33.     plt.title(lab) 

 

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

感謝閱讀!

 

責(zé)任編輯:張燕妮 來源: 雷鋒網(wǎng)
相關(guān)推薦

2023-02-14 08:10:14

Python人工智能XAI

2020-08-25 10:30:59

TensorFlow數(shù)據(jù)機器學(xué)習(xí)

2019-08-29 18:07:51

機器學(xué)習(xí)人工智能

2023-09-20 11:42:44

人工智能AI

2024-11-04 14:33:04

機器學(xué)習(xí)SHAP黑盒模型

2025-01-23 08:23:12

2019-05-13 09:22:21

微軟開源機器學(xué)習(xí)

2021-12-30 20:20:46

機器學(xué)習(xí)銷售語言

2021-01-08 10:47:07

機器學(xué)習(xí)模型算法

2019-07-17 09:59:46

JavaScriptJava機器學(xué)習(xí)

2018-05-23 09:20:12

人工智能機器學(xué)習(xí)技術(shù)

2016-11-03 09:19:04

Python機器學(xué)習(xí)庫

2023-08-11 13:54:31

AI因果

2017-06-27 09:43:43

Python機器學(xué)習(xí)

2024-11-29 12:00:00

Python機器學(xué)習(xí)

2021-03-04 12:40:25

機器學(xué)習(xí)人工智能爬坡測試

2021-03-12 11:00:14

機器學(xué)習(xí)人工智能爬坡測試

2022-07-29 15:28:45

人工智能Python框架

2025-01-13 08:13:18

2022-06-06 07:52:41

反欺詐技術(shù)AI
點贊
收藏

51CTO技術(shù)棧公眾號