1 绘图

sns.kdeplot()——核密度估计图
sns.distplot()——集合了matplotlib的hist()与核函数估计kdeplot的功能
Seaborn入门系列之kdeplot和distplot

2 Permutation Importance

我们在构建树类模型(XGBoost、LightGBM等)时,如果想要知道哪些变量比较重要的话。可以通过模型的feature_importances_方法来获取特征重要性。例如LightGBM的feature_importances_可以通过特征的分裂次数或利用该特征分裂后的增益来衡量。一般情况下,不同的衡量准则得到的特征重要性顺序会有差异。我一般是通过多种评价标准来交叉选择特征。若一个特征在不同的评价标准下都是比较重要的,那么该特征对label有较好的预测能力。
若将一个特征置为随机数,模型效果下降很多,说明该特征比较重要;反之则不是

import eli5
from eli5.sklearn import PermutationImportance
from sklearn.feature_selection import SelectFromModeldef PermutationImportance_(clf,X_train,y_train,X_valid,X_test):perm = PermutationImportance(clf, n_iter=5, random_state=1024, cv=5)perm.fit(X_train, y_train)    result_ = {'var':X_train.columns.values,'feature_importances_':perm.feature_importances_,'feature_importances_std_':perm.feature_importances_std_}feature_importances_ = pd.DataFrame(result_, columns=['var','feature_importances_','feature_importances_std_'])feature_importances_ = feature_importances_.sort_values('feature_importances_',ascending=False)#eli5.show_weights(perm, feature_names=X_train.columns.tolist(), top=500) #结果可视化   sel = SelectFromModel(perm, threshold=0.00, prefit=True)X_train_ = sel.transform(X_train)X_valid_ = sel.transform(X_valid)X_test_ = sel.transform(X_test)return feature_importances_,X_train_,X_valid_,X_test#PermutationImportance
model_1 = RandomForestClassifier(random_state=1024)
feature_importances_1,X_train_1,X_valid_1,X_test_1 = PermutationImportance_(model_1,X_train,y_train,X_valid,X_test)model_2 = lgb.LGBMClassifier(objective='binary',random_state=1024)
feature_importances_2,X_train_2,X_valid_2,X_test_2 = PermutationImportance_(model_2,X_train,y_train,X_valid,X_test)model_3 = LogisticRegression(random_state=1024)
feature_importances_3,X_train_3,X_valid_3,X_test_3 = PermutationImportance_(model_3,X_train,y_train,X_valid,X_test

3 部分依赖图

部分依赖图显示每个变量或预测变量如何影响模型的预测。这对于以下问题很有用:

  1. 男女之间的工资差异有多少仅仅取决于性别,而不是教育背景或工作经历的差异?
  2. 控制房屋特征,经度和纬度对房价有何影响?为了重申这一点,我们想要了解在不同区域如何定价同样大小的房屋,即使实际上这些地区的房屋大小不同。
  3. 由于饮食差异或其他因素,两组之间是否存在健康差异?
#画部分依赖图,看目标y与变量之间的关系
from sklearn.ensemble.partial_dependence import plot_partial_dependencemy_plots= plot_partial_dependence(my_model,feature_names= clo_to_use,features= [0,2],X= imputed_X)

4 tqdm

from tqdm import tqdm_notebook as tqdm

Tqdm 是一个快速,可扩展的Python进度条,可以在 Python 长循环中添加一个进度提示信息,用户只需要封装任意的迭代器 tqdm(iterator)。

5 特征工程

找出每一列中的唯一值,如果其唯一,则标记为1。
如果某一样本中含有唯一值,则视为真样本;如果某一样本中所有特征均不唯一,则视为假样本。
将真样本和真实训练样本拼在一起。

unique_samples = []
unique_count = np.zeros_like(df_test)
for feature in range(df_test.shape[1]):_, index_, count_ = np.unique(df_test[:, feature], return_counts=True, return_index=True)unique_count[index_[count_ == 1], feature] += 1# Samples which have unique values are real the others are fake
real_samples_indexes = np.argwhere(np.sum(unique_count, axis=1) > 0)[:, 0]
synthetic_samples_indexes = np.argwhere(np.sum(unique_count, axis=1) == 0)[:, 0]

"vc"列:重复数值的个数,大于10次的取10
"sum"列:出现次数大于1的,用vc列的值乘以(原值-均值)

for feat in feats:temp = df[feat].value_counts(dropna = True) df_train[feat+"vc"] = df_train[feat].map(temp).map(lambda x:min(10,x)).astype(np.uint8)df_test[feat+"vc"] = df_test[feat].map(temp).map(lambda x:min(10,x)).astype(np.uint8)print(feat,temp.shape[0],df_train[feat+"vc"].map(lambda x:int(x>2)).sum(),df_train[feat+"vc"].map(lambda x:int(x>3)).sum())df_train[feat+"sum"] = ((df_train[feat] - df[feat].mean()) * df_train[feat+"vc"].map(lambda x:int(x>1))).astype(np.float32)df_test[feat+"sum"] = ((df_test[feat] - df[feat].mean()) * df_test[feat+"vc"].map(lambda x:int(x>1))).astype(np.float32)df_train[feat+"sum2"] = ((df_train[feat]) * df_train[feat+"vc"].map(lambda x:int(x>2))).astype(np.float32)df_test[feat+"sum2"] = ((df_test[feat]) * df_test[feat+"vc"].map(lambda x:int(x>2))).astype(np.float32)df_train[feat+"sum3"] = ((df_train[feat]) * df_train[feat+"vc"].map(lambda x:int(x>4))).astype(np.float32) df_test[feat+"sum3"] = ((df_test[feat]) * df_test[feat+"vc"].map(lambda x:int(x>4))).astype(np.float32)
# FREQUENCY ENCODE
def encode_FE(df,col,test):cv = df[col].value_counts()nm = col+'_FE'df[nm] = df[col].map(cv)test[nm] = test[col].map(cv)test[nm].fillna(0,inplace=True)if cv.max()<=255:df[nm] = df[nm].astype('uint8')test[nm] = test[nm].astype('uint8')else:df[nm] = df[nm].astype('uint16')test[nm] = test[nm].astype('uint16')        returntest['target'] = -1
comb = pd.concat([train,test.loc[real_samples_indexes]],axis=0,sort=True)
for i in range(200): encode_FE(comb,'var_'+str(i),test)
train = comb[:len(train)]; del comb
print('Added 200 new magic features!')

kaggle-Santander 客户交易预测总结相关推荐

  1. kaggle竞赛--房价预测详细解读

    ## Kaggle竞赛 -- 房价预测 (House Prices) #### 完整代码见[kaggle kernel](https://www.kaggle.com/massquantity/all ...

  2. Kaggle泰坦尼克号生存预测挑战——模型建立、模型调参、融合

    Kaggle泰坦尼克号生存预测挑战 这是kaggle上Getting Started 的Prediction Competition,也是比较入门和简单的新人赛,我的最好成绩好像有进入top8%,重新 ...

  3. Kaggle泰坦尼克号生存预测挑战——数据分析

    Kaggle泰坦尼克号生存预测挑战 这是kaggle上Getting Started 的Prediction Competition,也是比较入门和简单的新人赛,我的最好成绩好像有进入top8%,重新 ...

  4. 银行离岸汇款客户交易预测

    银行离岸汇款客户交易预测 这是2018年招商银行最新的Fintech的复试习题,对于初学者而言,个人认为是一个不错的习题. 我在写这篇博客的时候,在这道数据分析题上已经战斗了5天,目前为止虽然得分不高 ...

  5. Kaggle 自行车租赁预测比赛项目实现

    作者:大树 更新时间:01.20 email:59888745@qq.com 数据处理,机器学习 回主目录:2017 年学习记录和总结 In [ ]: Kaggle上有很多有意思的项目,大家得空可以试 ...

  6. 《动手深度学习》4.10. 实战Kaggle比赛:预测房价

    4.10. 实战Kaggle比赛:预测房价 本节内容预览 数据 下载和缓存数据集 访问和读取数据集 使用pandas读入并处理数据 数据预处理 处理缺失值&对数值类数据标准化 处理离散值-on ...

  7. 04.10. 实战Kaggle比赛:预测房价

    4.10. 实战Kaggle比赛:预测房价 详细介绍数据预处理.模型设计和超参数选择. 通过亲身实践,你将获得一手经验,这些经验将有益数据科学家的职业成长. import hashlib import ...

  8. 实战Kaggle比赛:预测房价

    文章目录 实战Kaggle比赛:预测房价 1 - 下载和缓存数据集 2 - 访问和读取数据集 3 - 数据预处理 4 - 训练 5 - K折交叉验证 6 - 模型选择 7 - 提交你的Kaggle预测 ...

  9. XGBoost的基本使用应用Kaggle便利店销量预测

    XGBoost的基本使用应用 导入XGBoost等相关包: from numpy import loadtxt from xgboost import XGBClassifier from sklea ...

  10. Kaggle债务违约预测冠军经验分享

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 引言 SWOT分析法 优势Strengths利用我们已有的优势 弱势weaknesses我们需要提升的领域 机会opportun ...

最新文章

  1. 九度oj 题目1411:转圈
  2. Paypal IPN
  3. xgboost防止过拟合
  4. 在unity调用WebService的接口方法
  5. VTK:网格之WindowedSincPolyDataFilter
  6. HDOJ 1056 HangOver
  7. daad转换器实验数据_箔芯片电阻在高温应用A/D转换器中的应用
  8. Jquery一些常用的方法
  9. uefi linux开发环境,开发者为 Linux 添加了一系列 RISC-V UEFI 支持补丁
  10. 实现简单的Java内存缓存
  11. openffice安装(windows和linux)
  12. 产品数据管理系统框架与信息安全
  13. 汇编原理自我总结(四)
  14. java计时器_Java 计时器
  15. 第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母——C语言
  16. 土圭垚㙓数学课(一)万向锁(Gimbal Lock)
  17. 【Games101 作业6 + 附加题】渲染兔子 BVH SAH 代码
  18. Vue--》超详细教程——vue-cli脚手架的搭建与使用
  19. devtool使用介绍(3)
  20. matlab绘制循环语句的图,运用matlab实现循环语句中的多幅图像显示

热门文章

  1. 计划完成提醒系统C语言,通信录管理计划系统C语言知识程序设计.doc
  2. 火蚁机器人_适度偷懒提高整体效率:火蚁工作方式启发机器人群组协作
  3. Keras 文本预处理 text sequence
  4. 解决Ubuntu spyder 无法输入中文
  5. mysql set bulk_insert_buffer_size
  6. php调用接口接口代码无法执行,php调用c接口无错版介绍
  7. switch手柄可以连电脑吗_电脑可以拍照吗
  8. 强化学习笔记:PPO 【近端策略优化(Proximal Policy Optimization)】
  9. linux 笔记: screen
  10. 深度学习核心技术精讲100篇(七十六)-分类-决策树