2.逻辑回归、Softmax回归——鸢尾花大作战

逻辑回归

逻辑回归其实并不是回归,而是一个分类算法

分类问题:邮件分类、图像识别、疾病诊断、文字情感分析、金融欺诈检测

根据历史数据,预测样本是属于哪个类别,通过数据拟合分界

主要用于二分类任务

逻辑回归公式

事实上是在多元线性回归的基础上做了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是什么样的,采取不同策略

鸢尾花大作战

python 复制代码
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

iris = datasets.load_iris()
X = iris.data
y = iris.target

X_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))