逻辑回归
逻辑回归其实并不是回归,而是一个分类算法
分类问题:邮件分类、图像识别、疾病诊断、文字情感分析、金融欺诈检测
根据历史数据,预测样本是属于哪个类别,通过数据拟合分界
主要用于二分类任务
逻辑回归公式
事实上是在多元线性回归的基础上做了e的指数变换
二分类损失函数——二分类交叉熵
逻辑回归可以解决多分类问题吗?
答:可以。对于多分类来言,事实上是多次二分类操作,这个过程叫OVR,将样本带入每个二分类模型,看哪个得到的概率大
Softmax回归
Softmax回归,针对多分类任务,采用的是Softmax函数
和逻辑回归处理多分类不同,Softmax并不是划分成多个二分类任务逐次求出,而是同时求出n个分界线
对比如下
Softmax回归公式
计算后,pi求和是等于1的,这里的p其实就是预测值Yhead,z部分的运算依然是多元线性回归的方法
损失函数——对数损失logloss
ij的含义:第i个样本,第j个类别。由于是有监督学习,Y是真实值,带入计算得损失
逻辑回归多分类:
Softmax回归多分类
多标签MultiLabel和多分类MultiClass
对于多分类,每个样本中只属于一个类别,,适用Softmax
对于多标签,每个样本中可以存在多个类别,适用逻辑回归One-hot
观察data是什么样的,采取不同策略
鸢尾花大作战
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_scoreiris = datasets.load_iris()
X = iris.data
y = iris.targetX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)#空白会自动根据数据,如果想主动设置做二分类或多分类,可以通过打印y,看类别个数
#ovr为逻辑回归,multinomial为Softmax回归
lr = LogisticRegression(multi_class = 'ovr')lr.fit(X_train, y_train)y_pred = lr.predict(y_test)print("准确率:%.2f" % accuracy_score(y_test, y_pred))