探索性数据分析
1.缺失值情况
missingno.matrix(df)
2.因变量Y的情况
df.Y.value_counts()
3.可视化样本相关性
Xyang = df[df[“Y”] == 1]
Xnormal = df[df[“Y”] == 0]
sns.heatmap(Xyang.drop(‘Y’,axis=1).corr(),vmax=1,vmin=0,cmap=‘YlGnBu’)
sns.heatmap(Xnormal.drop(‘Y’,axis=1).corr(),vmax=1,vmin=0,cmap=‘YlGnBu’)
4.各变量在正负样本中的分布
数据划分
1.训练集与测试集
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size= 0.1, random_state = 0)
结果检验
1.计算预测准确率
accuracy_score(Y_test,predicted1)
2.生成混淆矩阵
confusion_matrix(Y_test, predicted1)
print(classification_report(Y_test, predicted1))
- 准确率
所有识别为”1”的数据中,正确的比率是多少。 如识别出来100个结果是“1”, 而只有90个结果正确,有10个实现是非“1”的数据,所以准确率就为90% - 召回率
所有样本为1的数据中,最后真正识别出1的比率。如100个样本”1”, 只识别出了93个是“1”, 其它7个是识别成了其它数据,所以召回率是93% - F1-score
是准确率与召回率的综合。 可以认为是平均效果。
3.ROC曲线与AUC面积
fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)
- y :标准值
- scores :每个预测值对应的阳性概率
- pos_label=2:在y中标签为2的是阳性标签,其余值是阴性
- 阈值选取规则:在scores值中从大到小的以此选取,减少了用于计算fpr和tpr的决策函数的阈值。
4.结果分箱
pandas.cut(x,bins,right=True,labels=None,retbins=False,precision=3,include_lowest=False)
- x:需要切分的数据
- bins:切分区域
- right : 是否包含右端点默认True,包含
- labels:对应标签,用标记来代替返回的bins,若不在该序列中,则返回NaN
- retbins:是否返回间距bins
- precision:精度
- include_lowest:是否包含左端点,默认False,不包含
分类模型
1.模型输入与输出
clf = xgb() 创建分类器对象
clf.fit(X_train,Y_train) 用训练数据拟合分类器模型
clf.predict(X_test) 用训练好的分类器去预测新数据,输出0/1
clf.predict_proba(X_test) 用训练好的分类器去预测新数据,输出0/1判定概率
2.XGBoost
clf = xgb.XGBClassifier(learning_rate = 0.1, n_estimators = 200, max_depth = 5, silent=True, min_child_weight = 1, subsample = 0.8, gamma = 0, colsample_bytree = 0.8, scale_pos_weight = 1, objective = ‘binary:logistic’, nthread = 4, seed = 1234)
- 大多时候学习率的大小一定程度上很影响模型的稳定性,学习率较小容易过拟合,学习率较大又容易欠拟合,所以很多时候都会先考虑对学习率进行调整
- max_depth[default=6] :树的最大深度。取值范围为:[1,∞]
- silent[default=0] :取0时表示打印出运行时信息,取1时表示不打印运行时信息
- min_child_weight[default=1] :孩子节点中最小的样本权重和。如果一个叶子节点的样本权重和小于min_child_weight则拆分过程结束
- 在现行回归模型中,这个参数是指建立每个模型所需要的最小样本数。该成熟越大算法越conservative。取值范围为:[0,∞]
- subsample [default=1] :用于训练模型的子样本占整个样本集合的比例。
- 如果设置为0.5则意味着XGBoost将随机的从整个样本集合中随机的抽取出50%的子样本建立树模型,这能够防止过拟合。取值范围为:(0,1]
- gamma [default=0]:在树的叶子节点上进行进一步分区所需的最小损失减少。算法越大,就越保守。取值范围为:[0,∞)
- colsample_bytree [default=1] :在建立树时对特征采样的比例。取值范围为:(0,1]
- scale_pos_weight:是用来调节正负样本不均衡问题的,用助于样本不平衡时训练的收敛。
- 如果仅仅关注预测问题的排序或者AUC指标,可以调节此参数;如果希望得到真正的预测概率,不能够通过此参数来平衡样本。
- objective:定义学习任务及相应的学习目标,“binary:logistic” 表示二分类的逻辑回归问题,输出为概率
- nthread:XGBoost运行时的线程数。缺省值是当前系统可以获得的最大线程数
- seed [ default=0 ]:随机数的种子
- eta[default=0.3] :为了防止过拟合,更新过程中用到的收缩步长。在每次提升计算之后,算法会直接获得新特征的权重
- eta通过缩减特征的权重使提升计算过程更加保守。取值范围为:[0,1]
来源:https://blog.csdn.net/weixin_38703839/article/details/99545009