train.drop(train[(train['OverallQual']<5) & (train['SalePrice']>200000)].index, inplace=True)
train.drop(train[(train['GrLivArea']>4500) & (train['SalePrice']<300000)].index, inplace=True)
train.reset_index(drop=True, inplace=True)
data["latest"] = (data["created"]- data["created"].min())
data["passed"] = (data["created"].max()- data["created"])
Featexp可以把一个数字特征,分成很多个样本数相等的区间 (Equal Population Bins) 。
from featexp import get_univariate_plots
# Plots drawn for all features if nothing is passed in feature_list parameter.
get_univariate_plots(data=data_train, target_col='target', features_list=['DAYS_BIRTH'], bins=10)
横轴是年龄,坐标轴约向左,表示年龄越大
创建了一个等间隔的bins的数值特征,然后计算每个bin的均值,然后画到左边,在我们的例子中,目标的均值代表了违约的概率。这个图告诉我们,负值越大(越往左,年龄越大)的人,违约的概率越小。这个图帮助我们理解模型和数据,告诉我们数据如何影响模型的结果。右边的图显示了每个bin中的客户的数量,所有年龄段的人几乎是相等的。
Featexp里有一个 get_trend_stats() 函数,可以返回一个数据框 (Dataframe) ,显示趋势相关性和趋势变化。代码如下:
from featexp import get_trend_stats
stats = get_trend_stats(data=data_train, target_col='target', data_test=data_test)
加上不要丢弃重要特征这一条规则,AUC提升到了0.74。