本学习笔记为阿里云天池龙珠计划金融风控训练营的学习内容,学习链接为:
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