需要安装imblearn
包,这里用Anaconda安装下就行conda install -c glemaitre imbalanced-learn
,需要注意的是目前imblearn
只支持到Phthon3.6,所以有必要的话可能需要在Aanacond里创建一个新Python环境。
对训练集⾥的少数类进⾏“过采样”(oversampling),即增加⼀些少数类样本使得正、反例数⽬接近,然后再进⾏学习。
随机过采样
随机过采样是在少数类中随机选择⼀些样本,然后复制选择的样本⽣成样本集,将它们添加到中来扩⼤原始数据集从⽽得到新的少数类集合。
from imblearn.over_sampling import RandomOverSampler
ros = RandomOverSampler(random_state=0)
X_resampled, y_resampled = ros.fit_sample(X, y)
print(Counter(y_resampled))
plt.scatter(X_resampled[:, 0], X_resampled[:, 1], c=y_resampled)
plt.show()
SMOTE
SMOTE(Synthetic Minority Oversampling)即合成少数类过采样技术,是随机过采样⽅法的⼀个改进算法。随机过采样⽅法是直接对少数类进⾏重采⽤,会使训练集中有很多重复的样本,容易造成产⽣的模型过拟合问题。
我们⽤图⽂表达的⽅式,来描述⼀下SMOTE算法:
- 先随机选定⼀个少数类样本
- 随机从这K个近邻中选出⼀个样本(⽤绿⾊圈出来了)。
- 在少数类样本和被选中的这个近邻样本之间的连线上,随机找⼀点。这个点就是⼈⼯合成的新的样本点(绿⾊正号标出)。之后如此重复,直到找齐样本集加入到原数据集中。
SMOTE算法摒弃了随机过采样复制样本的做法,可以防⽌随机过采样中容易过拟合的问题,实践证明此⽅法可以提⾼分类器(模型)的性能。
from imblearn.over_sampling import SMOTE
X_resampled, y_resampled = SMOTE().fit_sample(X, y)
print(Counter(y_resampled))
plt.scatter(X_resampled[:, 0], X_resampled[:, 1], c=y_resampled)
plt.show()
对训练集中多数类样本进⾏“⽋采样”(undersampling),即去除⼀些多数类中的样本使得正例、反例数⽬接近,然后再进⾏学习。
随机欠采样
随机⽋采样顾名思义即从多数类中随机选择⼀些样样本组成样本集,然后将样本集从中移除,构成一个新的数据集。
- 由于采样的样本集合要少于原来的样本集合,因此会造成⼀些信息缺失,多数类样本的删除有可能会导致分类器丢失有关多数类的重要信息。
- 因此通常使用过采样。
from imblearn.under_sampling import RandomUnderSampler
rus = RandomUnderSampler(random_state=0)
X_resampled, y_resampled = rus.fit_sample(X, y)
print(Counter(y_resampled))
plt.scatter(X_resampled[:, 0], X_resampled[:, 1], c=y_resampled)
plt.show()
关于ROC曲线的绘制过程,通过以下举例进行说明
假设有6次展示记录,有两次被点击了,得到一个展示序列(1:1,2:0,3:1,4:0,5:0,6:0),前面的表示序号,后面的表示点击(1)或没有点击(0)。
然后在这6次展示的时候都通过model算出了点击的概率序列。
下面看三种情况。
1 曲线绘制
1.1 如果概率的序列是(1:0.9,2:0.7,3:0.8,4:0.6,5:0.5,6:0.4)。[比如以0.75进行分割]
与原来的序列一起,得到序列(从概率从高到
逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。由于算法的简单和高效,在实际中应用非常广泛。
solver可选参数:{'liblinear', 'sag', 'saga', 'newton-cg', 'lbfgs'}默认 'liblinear' :用于优化问题的算法。对于小数据集来说,'liblinear' 是个不错的选择。而'sag'和'saga'对于大数据集会更快。对于多分类问题,只有'newton-cg', 'sag' 和’lbfgs‘可以处理多项损失,'liblinear'仅限于'one-versus-rest'分类。penalty:正则化种类,默认L2正则化。
复习笔记1——线性回归和逻辑回归
文章目录复习笔记1——线性回归和逻辑回归一、机器学习基本概念1.1 什么是模型1.2 极大似然估计1.3为啥使用梯度下降法求解1.4 梯度下降法本质1.5 梯度下降的算法调优1.6 归一化的作用1.7 类别特征的表示1.8 组合特征二、线性回归2.1为啥线性回归使用mse做损失函数2.2 常见损失函数2.2.1 MSE和MAE2.2.2 Huber Loss2.2.3 分位数损失 Quantile Loss2.2.4 交叉熵损失 Cross Entropy Loss2.3
1.评价指标定义(二分类)
对于二分类问题,可将样例根据其真实类别与学习器预测的类别组合成混淆矩阵。在该矩阵中,矩阵中的行代表样例的真实类别,矩阵中的列代表预测器预测的类别(行和列所代表的可以互相交换)。
目录1、分类评估方法1.1 分类评估方法1.1.1 精确率与召回率(1)混淆矩阵:(2) 精确率(Precision)与召回率(Recall)1.1.2 F1-score1.1.3 分类评估报告api1.2 ROC曲线与AUC指标1.2.1 TPR与FPR1.2.2 ROC曲线1.2.3 AUC指标1.2.4 AUC计算API总结:2、ROC曲线的绘制2.1 曲线绘制(1) 如果概率的序列是(1:0.9,2:0.7,3:0.8,4:0.6,5:0.5,6:0.4)(2) 如果概率的序列是(1:0.9,2:.
分类阙值真与假以及正类别与负类别准确率、精确率和召回率准确率精确率召回率精确率和召回率的关系ROC曲线和AUCROCAUC
如果某个逻辑回归模型对某封电子邮件进行预测时返回的概率为 0.9995,则表示该模型预测这封邮件非常可能是垃圾邮件。相反,在同一个逻辑回归模型中预测分数为 0.0003 的另一封电子邮件很可能不是垃圾邮件。可如果某封电子邮件的预测分数为 0.6 呢?
为了将逻辑回归值映射到二元类别,您必须指定分类阈值(也称为判定阈值)。如果值高于该阈值,则表示“垃圾邮件”;如果值低于该阈值,则表示“非垃圾邮件”。人们往往会认为分类阈值应始终为 0.5,但阈值取决于具体问题,因此您必
1、资源内容:基于Matlab绘制ROC和PR曲线(源码+图片).rar
2、适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。
3、更多仿真源码和数据集下载列表(自行寻找自己需要的):https://blog.csdn.net/m0_62143653?type=download
4、免责声明:本资源作为“参考资料”而不是“定制需求”不一定能够满足所有人的需求,需要有一定的基础能够看懂代码,能够自行调试,能够自行添加功能修改代码。由于作者大厂工作较忙,不提供答疑服务,如不存在资源缺失问题概不负责,谢谢理解。