天天看點

ML之PFI(eli5):基于mpg汽車油耗資料集利用RF随機森林算法和PFI置換特征重要性算法實作模型特征可解釋性排序

ML之PFI(eli5):基于mpg汽車油耗資料集利用RF随機森林算法和PFI置換特征重要性算法實作模型特征可解釋性排序

目錄

​​基于mpg資料集利用RF随機森林算法和PFI置換特征重要性算法實作模型特征可解釋性排序​​

​​# 1、定義資料集​​

​​# 2、資料集預處理​​

​​# 3、模型建立和訓練​​

​​# 3.1、資料集切分​​

​​# 4、對模型進行PFI可視化​​

​​# T1、基于模型本身的解釋—如随機森林樹模型,但模型可能會存在偏差​​

​​# T2、基于模型度量的解釋—PFI置換特征重要性并可視化​​

基于mpg汽車油耗資料集利用RF随機森林算法和PFI置換特征重要性算法實作模型特征可解釋性排序

# 1、定義資料集

mpg cylinders displacement horsepower weight acceleration model_year origin name
18 8 307 130 3504 12 70 usa chevrolet chevelle malibu
15 8 350 165 3693 11.5 70 usa buick skylark 320
18 8 318 150 3436 11 70 usa plymouth satellite
16 8 304 150 3433 12 70 usa amc rebel sst
17 8 302 140 3449 10.5 70 usa ford torino

# 2、資料集預處理

before (398, 9)
    mpg  cylinders  displacement  ...  model_year  origin                       name
0  18.0          8         307.0  ...          70     usa  chevrolet chevelle malibu
1  15.0          8         350.0  ...          70     usa          buick skylark 320
2  18.0          8         318.0  ...          70     usa         plymouth satellite
3  16.0          8         304.0  ...          70     usa              amc rebel sst
4  17.0          8         302.0  ...          70     usa                ford torino

[5 rows x 9 columns]
after dropna and drop (392, 8)
    mpg  cylinders  displacement  ...  acceleration  model_year  origin
0  18.0          8         307.0  ...          12.0          70     usa
1  15.0          8         350.0  ...          11.5          70     usa
2  18.0          8         318.0  ...          11.0          70     usa
3  16.0          8         304.0  ...          12.0          70     usa
4  17.0          8         302.0  ...          10.5          70     usa      

# 3、模型建立和訓練

# 3.1、資料集切分

X_feature_ns: ['mpg', 'cylinders', 'displacement', 'horsepower', 'weight', 'acceleration', 'model_year']      

# 4、對模型進行PFI可視化

# T1、基于模型本身的解釋—如随機森林樹模型,但模型可能會存在偏差

<style>
    table.eli5-weights tr:hover {
        filter: brightness(85%);
    }
</style>

        <table class="eli5-weights eli5-feature-importances" style="border-collapse: collapse; border: none; margin-top: 0em; table-layout: auto;">
    <thead>
    <tr style="border: none;">
        <th style="padding: 0 1em 0 0.5em; text-align: right; border: none;">Weight</th>
        <th style="padding: 0 0.5em 0 0.5em; text-align: left; border: none;">Feature</th>
    </tr>
    </thead>
    <tbody>
    
        <tr style="background-color: hsl(120, 100.00%, 80.00%); border: none;">
            <td style="padding: 0 1em 0 0.5em; text-align: right; border: none;">
                0.2846
                
                    ± 0.2878
                
            </td>
            <td style="padding: 0 0.5em 0 0.5em; text-align: left; border: none;">
                displacement
            </td>
        </tr>
    
        <tr style="background-color: hsl(120, 100.00%, 85.66%); border: none;">
            <td style="padding: 0 1em 0 0.5em; text-align: right; border: none;">
                0.1770
                
                    ± 0.2423
                
            </td>
            <td style="padding: 0 0.5em 0 0.5em; text-align: left; border: none;">
                weight
            </td>
        </tr>
    
        <tr style="background-color: hsl(120, 100.00%, 86.61%); border: none;">
            <td style="padding: 0 1em 0 0.5em; text-align: right; border: none;">
                0.1604
                
                    ± 0.1535
                
            </td>
            <td style="padding: 0 0.5em 0 0.5em; text-align: left; border: none;">
                horsepower
            </td>
        </tr>
    
        <tr style="background-color: hsl(120, 100.00%, 87.85%); border: none;">
            <td style="padding: 0 1em 0 0.5em; text-align: right; border: none;">
                0.1397
                
                    ± 0.1684
                
            </td>
            <td style="padding: 0 0.5em 0 0.5em; text-align: left; border: none;">
                mpg
            </td>
        </tr>
    
        <tr style="background-color: hsl(120, 100.00%, 89.82%); border: none;">
            <td style="padding: 0 1em 0 0.5em; text-align: right; border: none;">
                0.1085
                
                    ± 0.0800
                
            </td>
            <td style="padding: 0 0.5em 0 0.5em; text-align: left; border: none;">
                acceleration
            </td>
        </tr>
    
        <tr style="background-color: hsl(120, 100.00%, 92.40%); border: none;">
            <td style="padding: 0 1em 0 0.5em; text-align: right; border: none;">
                0.0715
                
                    ± 0.0545
                
            </td>
            <td style="padding: 0 0.5em 0 0.5em; text-align: left; border: none;">
                model_year
            </td>
        </tr>
    
        <tr style="background-color: hsl(120, 100.00%, 93.41%); border: none;">
            <td style="padding: 0 1em 0 0.5em; text-align: right; border: none;">
                0.0583
                
                    ± 0.1736
                
            </td>
            <td style="padding: 0 0.5em 0 0.5em; text-align: left; border: none;">
                cylinders
            </td>
        </tr>
    
    
    </tbody>
</table>      

# T2、基于模型度量的解釋—PFI置換特征重要性并可視化