逻辑回归实战笔记

目录

数据预处理

过采样

下采样

交叉验证



数据预处理

当不同特征分布极度不均:

n_1,_2:分别为两类数据,其中n_1>>n_2

过采样

生成n_1-n_2个2数据类型,使数分布均匀

SMOTE样本生成策略:

(1)对于少数类中每一个样本x,以欧氏距离为标准计算它到少数类样本集中所有样本的距离,得起k近邻。

(2)根据样本不平衡比例设置一个采样比例已确定采样倍率N,对于每一个少数类样本x,从起k近邻中随机选择若干个样本,假设选择的近邻为x_n.

(3)对于每一个随机选出的近邻x_n,分别与原样本按照如下的公式构建新的样本。

x_{new} = x+rand(0, 1)(\tilde{x}-x)

from imblearn.over_sampling import SMOTE
oversampler=SMOTE(random_state=0)
ov_features, ov_labels = oversampler.fit_sample(feature, label)

注:过采样召回率略低,但是精度较高,TN值较小

下采样

在1数据类型中取n_2个数出来,使数据分布较均匀

注:下采样会有较高召回率,但是TN值也可能较大,引起误判,造成更大的工作量

同一特征数据波动范围较大:

归一化:除以最大值,使数据在[0, 1]上

标准化:[-1, 1],

from sklearn.preprocessing import StandardScaler

StandardScaler().fit_transform(data[column].reshape(-1, 1))
# -1的解释:‘-1’=shape[0]*shape[1]/(不为-1的那一个,这里为1)

 

交叉验证

取一部分原始数据为训练集,另一部分为测试集

用一部分特征为X,另一特征为y,不同交换,对比结果,求稳

正则惩罚(penalty):

L_2=loss+\frac{1}{2}w^2取小值

L_1=loss+|w|

注:L1需要添加一个solver='liblinear'否则会报错
混淆矩阵:

0FN (False Negatives)FP(False Positives)
1TN(True Negatives)TP(True Positives)
实际值/预测值01
confusion_matrix(y_test, y_pred)

精度:accuracy=\frac{FN+TP}{FN+TP+FP+TN}

召回率:recall=\frac{TP}{FN+TP}

通过对阈值threshold(计算sigmoid函数值,画区间确定0,1)的调整,获取较好的召回率和精度:

y_pred_proba = lr.predict_proba(X_test)
y_pred = y_pred_proba[:, 1] > threshold

常用为0.5,越小,宁可错杀一万也不放过一个,越大宁可放过一万也不错杀一个

函数

numpy.random.choice(a, size=None, replace=True, p=None)
# a: 当a为整数是,在[0, a)中取值,a为列表,随机在列表中取值
# size: 整型或整型元组,输出的形状,整型就是size个,详细使用查看帮助文档
numpy.concatenate((a1, a2, ....), axis=0, out=None)
# 将a2加到a1的新的一行后一列去,axis=None时,直接返回所有元素组成一维列表
sklearn.model_selection.train_test_split(*arrays, test_size=None, train_size=None, random_state=None, shuffle=True, stratify=None)
# *array:待拆分的集合,matrix或DataFrame型
# train_size:训练集大小,浮点型取值为(0, 1)为百分比,整型为具体数量,默认0.25
sklearn.model_selection.FKold
kf = KFold(n_splits, shuffle, random_state)
train_indexes, test_indexes = kf.split(X)
# 在将X分成n份,返回索引值[nxm]m为X的特征数


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值