我是靠谱客的博主 含糊鸭子,最近开发中收集的这篇文章主要介绍房屋信贷违约风险竞争(kaggle)系列6-模型解释一. 模型解释,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一. 模型解释

作为一种查看哪些变量最相关的简单方法,我们可以查看随机森林的特征输入。
鉴于我们在探索性数据分析中看到的相关性,我们应该预期最重要的特性是EXT_SOURCE和DAYS_BIRTH。
在未来的工作中,我们可能会使用这些特征输入作为降维的方法。

# 导入基本处理模块
import numpy as np
import pandas as pd
from sklearn.preprocessing import LabelEncoder
import os
import warnings
warnings.filterwarnings('ignore')
import matplotlib.pyplot as plt
import seaborn as sns

# 输入处理缺失值
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import PolynomialFeatures

from sklearn.preprocessing import MinMaxScaler
from sklearn.linear_model import LogisticRegression

app_train = pd.read_csv('E:/home_credit_default_risk/application_train.csv')
app_test = pd.read_csv('E:/home_credit_default_risk/application_test.csv')

train_labels = app_train['TARGET']

app_train = app_train.select_dtypes(['number'])
app_test = app_test.select_dtypes(['number'])

# 从训练数据中删除目标
if 'TARGET' in app_train:
    train = app_train.drop(columns=['TARGET'])
else:
    train = app_train.copy()

# 特征名称
features = list(train.columns)

# 复制测试集
test = app_test.copy()

# 缺失值的中值估算
imputer = SimpleImputer(strategy='median')

# 将每个特性缩放到0-1
scaler = MinMaxScaler(feature_range=(0, 1))

# 符合训练数据
imputer.fit(train)

# 转换训练和测试数据
train = imputer.transform(train)
test = imputer.transform(app_test)

# 重复的标量
scaler.fit(train)
train = scaler.transform(train)
test = scaler.transform(test)

from sklearn.ensemble import RandomForestClassifier

# 建立随机森林分类器
random_forest = RandomForestClassifier(n_estimators = 100, random_state = 50, verbose = 1, n_jobs = -1)
# Train on the training data
random_forest.fit(train, train_labels)

# 提取重要特征
feature_importance_values = random_forest.feature_importances_
feature_importances = pd.DataFrame({'feature': features, 'importance': feature_importance_values})

# 对测试数据进行预测
predictions = random_forest.predict_proba(test)[:, 1]

# 做一个提交用的dataframe
submit = app_test[['SK_ID_CURR']]
submit['TARGET'] = predictions



def plot_feature_importances(df):
    """
    由平面图测量模型的重要性。这可以用任何测量
如果重要性越高越好,那么特征的重要性就越大。

参数:
df(dataframe):功能重要性。必须在列中包含特征吗
在一个名为“重要性”的专栏中,它被称为“特征”和“重要性”

返回:
显示了15个最重要的特征
df (dataframe):按特征的重要性进行排序(最高到最低)
带有一列表示归一化重要性
        """

    # 按特征的重要性进行排序
    df = df.sort_values('importance', ascending=False).reset_index()

    # 对特性的重要性进行规范化,使其加起来为1
    df['importance_normalized'] = df['importance'] / df['importance'].sum()

    # 制作测量特征的水平条形图
    plt.figure(figsize=(10, 6))
    ax = plt.subplot()

    # 需要反向索引绘制最重要的顶部
    ax.barh(list(reversed(list(df.index[:15]))),
            df['importance_normalized'].head(15),
            align='center', edgecolor='k')

    # 设置y轴刻度和标签
    ax.set_yticks(list(reversed(list(df.index[:15]))))
    ax.set_yticklabels(df['feature'].head(15))

    # 平面图的标签
    plt.xlabel('Normalized Importance');
    plt.title('Feature Importances')
    plt.show()

    return df


#  将特征重要性显示为默认的
feature_importances_sorted = plot_feature_importances(feature_importances)

image.png

我们看到,我们所有的四个自己设计的功能都使它进入了前15个最重要的!这能使我们确信,我们的领域知识至少有部分走上了正轨。

最后

以上就是含糊鸭子为你收集整理的房屋信贷违约风险竞争(kaggle)系列6-模型解释一. 模型解释的全部内容,希望文章能够帮你解决房屋信贷违约风险竞争(kaggle)系列6-模型解释一. 模型解释所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部