金融风控训练营Task6打卡

本学习笔记为阿里云天池龙珠计划金融风控训练营的学习内容,学习链接为:

https://tianchi.aliyun.com/competition/entrance/531830/introduction?spm=5176.20850282.J_3678908510.4.f2984d57kCveJd

一、学习知识点概要

理解赛题、EDA探索性数据分析、特征工程、建模与调参、模型融合

二、学习内容

本次学习有易到难,学习了很多知识点

分块读取文件

 nrow用来设置读取文件的前多少行,nrows=5即读取文件的前5行,注意python起始编码为0,所以读取0,1,2,3,4行数据

查看数据集的样本个数和原始特征维度¶

shape()返回数组的维度 

infro()查看数据的类型

describe() 查看数据的基本统计量:均值、标准差、最小值、最大值、分位点等

head(),tail(),append() 

data_train.head(3).append(data_train.tail(3))
#head()返回前3行的数据,tail()返回后3行的数据,append()用于末尾添加新对象

 查看缺失特征中缺失率大于50%的特征

have_null_fea_dict = (train.isnull().sum()/len(train)).to_dict()#缺失值大于50%的列(key,value),(列名,计算值)
fea_null_moreThanHalf = {}#生成一个dict存储缺失值大于50%的数据
for key,value in have_null_fea_dict.items():
    if value > 0.5:
        fea_null_moreThanHalf[key] = value

缺失值的填充

#将缺失值填充为0

#将缺失值填充为0
data_train = data_train.fillna(0)

将超过十年的时间记成10年,将小于1年的时间记成0年

def employmentLength_to_int(s):
    if pd.isnull(s):
        return s
    else:
        return np.int8(s.split()[0])
for data in [data_train, data_test_a]:
    data['employmentLength'].replace(to_replace='10+ years', value='10 years', inplace=True)
    data['employmentLength'].replace('< 1 year', '0 years', inplace=True)
    data['employmentLength'] = data['employmentLength'].apply(employmentLength_to_int)

 均方差检验

def find_outliers_by_3segama(data,fea):
    data_std = np.std(data[fea])
    data_mean = np.mean(data[fea])
    outliers_cut_off = data_std * 3
    lower_rule = data_mean - outliers_cut_off
    upper_rule = data_mean + outliers_cut_off
    data[fea+'_outliers'] = data[fea].apply(lambda x:str('异常值') if x > upper_rule or x < lower_rule else '正常值')
    return data

 

data_train = data_train.copy()
for fea in numerical_fea:
    data_train = find_outliers_by_3segama(data_train,fea)
    print(data_train[fea+'_outliers'].value_counts())
    print(data_train.groupby(fea+'_outliers')['isDefault'].sum())
    print('*'*10)

  查看数据在空间的分布

from numpy import loadtxt, where
from pylab import scatter, show, legend, xlabel, ylabel
 
#load the dataset
data = loadtxt('/home/HanXiaoyang/data/data1.txt', delimiter=',')
 
X = data[:, 0:2]
y = data[:, 2]
 
pos = where(y == 1)
neg = where(y == 0)
scatter(X[pos, 0], X[pos, 1], marker='o', c='b')
scatter(X[neg, 0], X[neg, 1], marker='x', c='r')
xlabel('Feature1/Exam 1 score')
ylabel('Feature2/Exam 2 score')
legend(['Fail', 'Pass'])
show()

————————————————
版权声明:本文为CSDN博主「寒小阳」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/han_xiaoyang/article/details/49123419

简单投票

from xgboost import XGBClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier, VotingClassifier
clf1 = LogisticRegression(random_state=1)
clf2 = RandomForestClassifier(random_state=1)
clf3 = XGBClassifier(learning_rate=0.1, n_estimators=150, max_depth=4, min_child_weight=2, subsample=0.7,objective='binary:logistic')

vclf = VotingClassifier(estimators=[('lr', clf1), ('rf', clf2), ('xgb', clf3)])
vclf = vclf .fit(x_train,y_train)
print(vclf .predict(x_test))

三、学习的问题

 在学习过程中,对代码的不熟悉是主要的问题之一,其次在一些建模方法的原理理解上也遇到了一些问题。在运行代码的过程中会出现文件找不到而报错的现象。 

四、学习的思考与总结

 经过15天的学习,经历了从赛题理解、EDA探索性数据分析、特征工程、到建模调参,模型融合整个过程,大致了解了用数据分析来解决问题的步骤与流程,学习了实现它们的基础的代码,觉得收获很多,至少不像第一天拿到数据不知从何下手了。但是数据分析这条路学无止尽,还要继续探索学习。

引用:https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.20850282.J_3678908510.20.f2984d57kCveJd&postId=170949

          https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.20850282.J_3678908510.20.f2984d57kCveJd&postId=170949

          https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.20850282.J_3678908510.20.f2984d57kCveJd&postId=170949

          https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.20850282.J_3678908510.26.f2984d57kCveJd&postId=170952

 

你可能感兴趣的:(数据分析)