ctr+4/5注释
数据下载地址
1.先导入包:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import xgboost as xgb
import warnings
warnings.filterwarnings('ignore')

2.读入数据:

train_A=pd.read_csv('./input/A_train.csv')
train_B=pd.read_csv('./input/B_train.csv')
test_B=pd.read_csv('./input/B_test.csv')
train_B=train_B.drop('UserInfo_170',axis=1)#去除全零列

3.严重缺失的特征处理:

meaningful_col=[]
for col in train_B_info.columns:if train_B_info.ix[0,col]>train_B.shape[0]*0.01:meaningful_col.append(col)
train_B_1=train_B[meaningful_col].copy()
#print(train_B.shape)
#print(train_B_1.shape)

info的第一列是count,如果特征的取值缺失,就不会count,比如某特征count为1,而train_B.shape[0]即数据点个数(行数)为4000,即此特征有3999个缺失值。
train_B_info.ix[0,col]代表describe这表的第0行col列的数.

4.缺失值填充
此处我们直接用-999进行填充.
train_B_1=train_B_1.fillna(-999)

5.高线性相关性数据处理

分析:如果两个特征是完全线性相关的,这个时候我们仅仅只需要保留其中一个即可.因为第二个特征包含的信息基本完全被第一个特征所包含.此时如果两个特征同时保留的话,模型的性能很大情况下会出现下降的情况.

  • 我们选择将高线性相关的特征进行删除
    relation=train_B_1.corr() 该变量的矩阵如图:

Pandas中ix和iloc有什么区别?[1]

  • loc是基于column name选取特定行
  • iloc是基于行、列的位置选取特定行
  • ix是loc和iloc的混合体
 #结合相关性的那张图(第j行第i列)
length=relation.shape[0]
high_corr=list()
final_cols=[]
del_cols=[]
for i in range(length):if relation.columns[i] not in del_cols:final_cols.append(relation.columns[i])for j in range(i+1,length):if relation.ix[i,j]>0.98 and relation.columns[j] not in del_cols:del_cols.append(relation.columns[j])
train_B_1=train_B_1[final_cols]

6.模型训练与测试.

6.2.虽然上面的数据预处理和分析很简单,但是考虑到该赛题的数据是进行过预处理的,所以进行微处理后的数据已经具有较好的表示能力了,下面我们就上模型xgboost.

#模型训练
train_B_flag=train_B_1['flag']
train_B_1.drop('no',axis=1,inplace=True)
train_B_1.drop('flag',axis=1,inplace=True)dtrain_B=xgb.DMatrix(data=train_B_1,label=train_B_flag)
Trate=0.25
params={'booster':'gbtree','eta':0.1,'max_depth':4,'max_delta_step':0,'subsample':0.9,'colsample_bytree':0.9,'base_scorce':Trate,'objective':'binary:logistic','lambda':5,'alpha':8,'random_seed':100}
params['eval_metric']='auc'
xgb_model=xgb.train(params,dtrain_B,num_boost_round=200,maximize=True,verbose_eval=True)
  • drop函数默认删除行,列需要加axis = 1.
  • 采用inplace=True之后,原数组名(如2和3情况所示)对应的内存值直接改变;而采用inplace=False之后,原数组名对应的内存值并不改变,需要将新的结果赋给一个新的数组或者覆盖原数组的内存.
1. DF= DF.drop('column_name', axis=1);
2. DF.drop('column_name',axis=1, inplace=True)
3. DF.drop([DF.columns[[0,1, 3]]], axis=1, inplace=True)   # Note: zero indexed

6.3
选择采用test_B[train_B_1.columns]的形式 .输入测试特征,这样做的好处是可以防止很多情况下我们不小心没有将特征进行对齐,例如训练集我们的特征的顺序为fea2,fea1,fea3.但是我们的测试集的特征顺序为fea1,fea2,fea3.这时我们的预测结果就会十分的糟糕.

#模型测试
res=xgb_model.predict(xgb.DMatrix(test_B[train_B_1.columns].fillna(-999)))
test_B['pre']=res
test_B[['no','pre']].to_csv('submit.csv',index=None)#只需要这两列保存csv

7.全部源码:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import xgboost as xgb
import warnings
warnings.filterwarnings('ignore')train_A=pd.read_csv('./input/A_train.csv')
train_B=pd.read_csv('./input/B_train.csv')
test_B=pd.read_csv('./input/B_test.csv')
train_B=train_B.drop('UserInfo_170',axis=1)
train_B_info=train_B.describe()meaningful_col=[]
for col in train_B_info.columns:if train_B_info.ix[0,col]>train_B.shape[0]*0.01:meaningful_col.append(col)
train_B_1=train_B[meaningful_col].copy()
#print(train_B.shape)
#print(train_B_1.shape)
train_B_1=train_B_1.fillna(-999)
relation=train_B_1.corr()
#结合相关性的那张图(第j行第i列)
length=relation.shape[0]
high_corr=list()
final_cols=[]
del_cols=[]
for i in range(length):if relation.columns[i] not in del_cols:final_cols.append(relation.columns[i])for j in range(i+1,length):if relation.ix[i,j]>0.98 and relation.columns[j] not in del_cols:del_cols.append(relation.columns[j])
train_B_1=train_B_1[final_cols]#模型训练
train_B_flag=train_B_1['flag']
train_B_1.drop('no',axis=1,inplace=True)
train_B_1.drop('flag',axis=1,inplace=True)dtrain_B=xgb.DMatrix(data=train_B_1,label=train_B_flag)
Trate=0.25
params={'booster':'gbtree','eta':0.1,'max_depth':4,'max_delta_step':0,'subsample':0.9,'colsample_bytree':0.9,'base_scorce':Trate,'objective':'binary:logistic','lambda':5,'alpha':8,'random_seed':100}
params['eval_metric']='auc'
xgb_model=xgb.train(params,dtrain_B,num_boost_round=200,maximize=True,verbose_eval=True)#模型测试
res=xgb_model.predict(xgb.DMatrix(test_B[train_B_1.columns].fillna(-999)))
test_B['pre']=res
test_B[['no','pre']].to_csv('submit.csv',index=None)#只需要这两列保存csv

[1]https://www.zhihu.com/question/47362048
本笔记参见 https://www.kesci.com/home/project/59ca5ff521100106623f3db3

前海征信“好信杯”大数据算法大赛——入门篇笔记相关推荐

  1. 前海征信“好信杯”大数据算法竞赛 - HM队【附源码】 原创 2017-06-17 高铭 科赛Kesci 赛题回顾 自2006年Hinton等人提出“深度学习”概念至今,深度学习在海量数据的挖

    前海征信"好信杯"大数据算法竞赛 - H&M队[附源码] 原创 2017-06-17 高铭 科赛Kesci 赛题回顾 自2006年Hinton等人提出"深度学习& ...

  2. 读《大数据之路-阿里巴巴大数据实践》数据模型篇笔记

    读<大数据之路-阿里巴巴大数据实践>数据模型篇 七 建模综述 OLTP 面向数据 随机读写 3NF OLAP 批量读写 不关注一致性更关心数据整合 ER模型–衍生出dataVault 维度 ...

  3. 滴滴大数据算法大赛Di-Tech2016参赛总结

    https://www.jianshu.com/p/4140be00d4e3 题目描述 建模方法 特征工程 我的几次提升方法 从其他队伍那里学习到的提升方法 总结和感想 神经网络方法的一点思考 大数据 ...

  4. 天翼杯大数据算法应用大赛感想

    竞赛过去很久了,早就想写写感想与经历,可是一直拖着没写.今天终于有时间了,就写写吧. 竞赛题目是视频网站推荐,根据前七周每天用户对10个视频网站的访问次数数据以及其他上网行为,预测用户第八周对10个视 ...

  5. 海致大数据京信_海致BDP胡嵩:大数据在怎样的时代卖给怎样的人

    安全问题其实多数时候是企业用来拒绝你的一个借口,而不是真正的理由.那些企业不是对安全的需求太高,而是对数据分析的需求太低.原文链接:海致BDP胡嵩:大数据在怎样的时代卖给怎样的人 胡嵩:2004 年- ...

  6. 海致大数据京信_海致BDP胡嵩:大数据企业将何去何从?

    安全问题其实多数时候是企业用来拒绝你的一个借口,而不是真正的理由.那些企业不是对安全的需求太高,而是对数据分析的需求太低. 以下内容根据胡嵩演讲及采访内容整理而成,对如今的 to B 服务创业者,尤其 ...

  7. 【获奖案例巡展】信创先锋之星——云上贵州信创工程中心大数据中台

    为表彰使用大数据.人工智能等基础软件为企业.行业或世界做出杰出贡献和巨大创新的标杆项目,星环科技自2021年推出了"新科技 星力量" 星环科技科技实践案例评选活动,旨在为各行业提供 ...

  8. 独家直播双十一全网动态?前黑客“劳改”带你玩转大数据

    独家直播双十一全网动态?前黑客"劳改"带你玩转大数据 发表于2015-11-24 10:26| 4044次阅读| 来源CSDN| 7 条评论| 作者蒲婧 CTO俱乐部CTOCTO讲 ...

  9. 三城演义!第二届中国移动“梧桐杯”大数据应用创新大赛复赛完美收官

    8月19日至26日,第二届中国移动"梧桐杯"大数据应用创新大赛暨大数据创客马拉松大赛的三场复赛路演暨颁奖典礼在杭州.武汉.广州三地成功举办.35支队伍在数智乡村.数智城市.数智交通 ...

最新文章

  1. SAP JAM的dashboard
  2. 断言assert使用方法
  3. android 4.0 禁用系统home键
  4. 变异数分析_人工智能系统中分析变异的祸害
  5. 014-JVM-查看class文件的工具Binary viewer、ue、classlib Bytecode viewer
  6. 关于下载安装pycharm专业版的步骤
  7. Acer 4750 安装黑苹果_黑苹果 MacOS 10.15 Catalina安装教程
  8. c语言模拟扫雷小游戏
  9. JavaScript:实现Comb sort梳排序算法(附完整源码)
  10. 树莓派raspios(原raspbian)下载地址
  11. 序列化版本号(serialVersionUID)是做什么用的
  12. Vue Devtools不显示Components
  13. JAVA--利用Filter和session防止页面重复提交
  14. 山艺2021年高考成绩查询,2021年山东艺术学院高考录取结果什么时候出来及查询系统入口...
  15. 统计学习第一章知识总结
  16. python 画风矢量图
  17. python两种方法读取、修改文件的创建时间、修改时间、访问时间
  18. 深度解析dubbo负载均衡之接口
  19. Rockey 4加密狗介绍
  20. 【我是学生,可以送我么】搭建树莓派4bJTAG调试平台jlink平替版

热门文章

  1. 【NLP】余弦定理计算文本相似度
  2. 盘点:2022年国内31省市数字经济发展相关政策、目标
  3. 聂易铭:3月11日数字货币插针诱惑,做多只能浅尝辄止
  4. python 主力资金_邢不行 | 量化投资中如何计算机构、主力、散户资金流数据【视频】...
  5. java计算机毕业设计教师教学质量评估系统MyBatis+系统+LW文档+源码+调试部署
  6. python爬虫工资高吗_月薪2万的爬虫工程师,Python需要学到什么程度?
  7. 软件企业认定条件(双软企业认定条件2023)
  8. 封面空格处添加下划线
  9. C# 文字视频生成器
  10. 【DEBUG】mxs-auart mxs-auart.0: Unhandled status 520080