日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

10.Partial Dependence Plots

發布時間:2023/12/10 编程问答 80 豆豆
生活随笔 收集整理的這篇文章主要介紹了 10.Partial Dependence Plots 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本教程是ML系列的一部分。 在此步驟中,您將學習如何創建和解釋部分依賴圖,這是從模型中提取洞察力的最有價值的方法之一。

What Are Partial Dependence Plots

?有人抱怨機器學習模型是黑盒子。這些人會爭辯說我們無法看到這些模型如何處理任何給定的數據集,因此我們既不能提取洞察力也不能確定模型的問題。

總的來說,提出這種說法的人不熟悉部分依賴圖。部分依賴圖顯示每個變量或預測變量如何影響模型的預測。這對于以下問題很有用:

  • ????男女之間的工資差異有多少僅僅取決于性別,而不是教育背景或工作經歷的差異?
  • ????控制房屋特征,經度和緯度對房價有何影響?為了重申這一點,我們想要了解在不同區域如何定價同樣大小的房屋,即使 實際上這些地區的房屋大小不同。
  • ????由于飲食差異或其他因素,兩組之間是否存在健康差異?
  • 如果您熟悉線性或邏輯回歸模型,則可以與這些模型中的系數類似地對部分依賴圖進行解釋。但是,部分依賴圖可以從數據中捕獲更復雜的模式,并且可以與任何模型一起使用。如果您不熟悉線性或邏輯回歸,請不要接受這種比較。

    我們將在下面展示幾個示例,解釋它們的含義,然后討論代碼。

    Interpreting Partial Dependence Plots

    我們將從2個部分依賴圖開始,顯示Price和來自Melbourne Housing數據集的幾個變量之間的關系(根據我們的模型)。 我們將介紹如何創建和解釋這些圖。

    【1】

    import pandas as pd from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier from sklearn.ensemble.partial_dependence import partial_dependence, plot_partial_dependence from sklearn.preprocessing import Imputercols_to_use = ['Distance', 'Landsize', 'BuildingArea']def get_some_data():data = pd.read_csv('../input/melbourne-housing-snapshot/melb_data.csv')y = data.PriceX = data[cols_to_use]my_imputer = Imputer()imputed_X = my_imputer.fit_transform(X)return imputed_X, yX, y = get_some_data() my_model = GradientBoostingRegressor() my_model.fit(X, y) my_plots = plot_partial_dependence(my_model, features=[0,2], X=X, feature_names=cols_to_use, grid_resolution=10)

    ?

    左圖顯示了我們的目標,銷售價格和距離變量之間的部分依賴關系。此數據集中的距離測量墨爾本中央商務區的距離。

    僅在模型擬合后才計算部分依賴圖。該模型適用于實際數據。在那些真實的數據中,城鎮不同地區的房屋可能有多種不同的方式(不同的年齡,大小等)。但是在模型擬合之后,我們可以從一個房屋的所有特征開始。比如,一間有2間臥室,2間浴室,10歲的房子等等。

    然后我們使用該模型來預測該房屋的價格,但我們在進行預測之前更改距離變量。我們首先預測距離為4時房屋的價格。然后我們預測設定距離為5的價格。然后再次預測距離為6的價格。依此類推。當我們從小的距離值(在水平軸上)移動時,我們會追蹤預測價格如何變化(在垂直軸上)。

    在本說明中,我們只使用了一個房子。但由于相互作用,單個房屋的部分依賴圖可能是非典型的。所以,我們用多個房子重復那個實驗,然后我們在垂直軸上繪制平均預測價格。你會看到一些負數。這并不意味著會以負價出售。相反,它意味著價格將低于該距離的實際平均價格。

    在左圖中,我們看到房價下跌,因為我們進一步從中央商務分散注意力。雖然大約16公里外似乎有一個不錯的郊區,但房價高于許多更近的郊區。

    右圖顯示了建筑面積的影響,其解釋類似。較大的建筑面積意味著更高的價格。

    這些圖既可用于提取洞察力,也可用于檢查模型是否正在學習您認為合理的內容。

    Code

    我們不關注加載數據的代碼,相反關注繪圖的代碼:

    【2】

    def get_some_data():cols_to_use = ['Distance', 'Landsize', 'BuildingArea']data = pd.read_csv('../input/melbourne-housing-snapshot/melb_data.csv')y = data.PriceX = data[cols_to_use]my_imputer = Imputer()imputed_X = my_imputer.fit_transform(X)return imputed_X, y

    【3】

    from sklearn.ensemble.partial_dependence import partial_dependence, plot_partial_dependence# get_some_data is defined in hidden cell above. X, y = get_some_data() # scikit-learn originally implemented partial dependence plots only for Gradient Boosting models # this was due to an implementation detail, and a future release will support all model types. my_model = GradientBoostingRegressor() # fit the model as usual my_model.fit(X, y) # Here we make the plot my_plots = plot_partial_dependence(my_model, features=[0, 2], # column numbers of plots we want to showX=X, # raw predictors data.feature_names=['Distance', 'Landsize', 'BuildingArea'], # labels on graphsgrid_resolution=10) # number of values to plot on x axis

    一些與plot_partial_dependence有關的提示:

  • ????這些要素是您希望繪制的X數組或數據框中的列號。這開始看起來比2或3個變量更糟糕。您可以一次重復調用繪圖2或3。
  • ????可以選擇確定水平軸上的哪些點。最簡單的是grid_resolution,我們用它來確定繪制了多少個不同的點。隨著該值的增加,這些圖形看起來呈鋸齒狀,因為您將在模型中拾取大量隨機性或噪聲。最好不要在字面上采用小的或鋸齒狀的波動。 grid_resolution的較小值使這一點平滑。對于具有多行的數據集來說,這也是一個問題。
  • ????有一個叫做partial_dependence的函數來獲取構成這個圖的原始數據,而不是制作視覺圖。如果您想使用Seaborn等繪圖包控制它的可視化方式,這非常有用。通過適度的努力,您可以制作更好看的圖。
  • Another Examples

    以下是泰坦尼克號數據中非常簡單的模型的部分圖。

    [4]

    titanic_data = pd.read_csv('../input/titanic/train.csv') titanic_y = titanic_data.Survived clf = GradientBoostingClassifier() titanic_X_colns = ['PassengerId','Age', 'Fare',] titanic_X = titanic_data[titanic_X_colns] my_imputer = Imputer() imputed_titanic_X = my_imputer.fit_transform(titanic_X)clf.fit(imputed_titanic_X, titanic_y) titanic_plots = plot_partial_dependence(clf, features=[1,2], X=imputed_titanic_X, feature_names=titanic_X_colns, grid_resolution=8)

    ?

    ?

    乍一看,這些看起來可能令人驚訝。 但他們展示了一些有趣的見解:

  • ???? 年輕人生存幾率大。 這與歷史敘述一致,他們首先讓女性和兒童脫離了泰坦尼克號。
  • ???? 支付更多的人有更好的生存幾率。 事實證明,更高的票價讓你有一個更接近船頂的小屋,并且可能給你更好的獲得救生艇的幾率。
  • Conclusion

    部分依賴圖是從復雜模型中提取洞察力的好方法(盡管不是唯一的方法)。這些可以非常強大,可以將這些見解傳達給同事或非技術用戶。

    當這些圖來自非實驗數據時,對于如何解釋這些圖有各種各樣的觀點。有些人聲稱,除非來自實驗,否則你不能對數據的因果關系做任何結論。其他人對從非實驗數據(也稱為觀察數據)可以學到的東西更加積極。這是數據科學領域的一個分歧主題,超出了本教程的范圍。

    但大多數人都同意這些對于理解您的模型很有用。此外,鑒于大多數真實世界數據源的混亂,您的模型捕獲真實模式也是一個很好的理智檢查。

    partial_dependence_plot函數是獲取這些圖的簡單方法,盡管結果在視覺上并不美觀。 partial_dependence函數為您提供原始數據,以防您想要制作演示質量圖表。

    Your?Turn

    在項目中選擇三個預測變量。 制定關于部分依賴圖將是什么樣的。 創建繪圖,并根據您的假設檢查結果。

    總結

    以上是生活随笔為你收集整理的10.Partial Dependence Plots的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。