分类逻辑回归实例一

一、实例背景

假设根据【推荐分值】来对推荐者类型进行分类:高推荐、中推荐、低推荐
在这里插入图片描述

二、任务目标

训练出一个模型,来实现根据【推荐分值】,来预测【推荐类型】的分类

三、机器学习实现

1. 核心步骤

实现全流程:

在这里插入图片描述

1. 1 建立模型

任务目标是实现分类,且从原数据可看出,分类标签为高、中、低三种类别:因此应建立“多分类-逻辑回归模型
在sklearn中,无论是二分类还是多分类逻辑回归,实际都是建立在线性回归方程上的逻辑回归,因此建立模型核心代码为

# 1. 建立模型:逻辑回归模型
classifier = linear_model.LogisticRegression()

1.2 学习模型

1)确定损失函数:极大似然估计法
2)求解计算指标最优的方式:sklearn默认为迭代-求近似解的方式
并且classifier = linear_model.LogisticRegression()如果没有特别说明,则默认为拟牛顿法(默认solver=“lbfgs”)
如果要更改指标最优的迭代求解方式,可增加参数设置:solver
在这里插入图片描述

# 1. 建立模型:逻辑回归模型+选择损失函数的优化方法
classifier = linear_model.LogisticRegression(solver="sag") # 随机梯度下降法
# 2. 学习模型
classifier.fit(X,Y) 

1.3 衡量模型

分类-逻辑回归模型的衡量指标分别为:准确率、精确率、召回率、F1分数
核心代码如下:

# 3. 衡量模型
accurency = classifier.score(X,Y)
PRF = classification_report(Y,Y_predict)

2. 代码

from sklearn import linear_model
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.metrics import classification_report

# 获取所需数据:'推荐分值', '推荐类型'
datas = pd.read_excel('./datas2.xlsx')
important_features = ['推荐分值', '推荐类型']
datas_1 = datas[important_features]

# 明确实际类别Y为'推荐类型',X为'推荐分值'
Y = datas_1['推荐类型']
X = datas_1.drop('推荐类型',axis=1)


# 1. 建立模型:逻辑回归模型
classifier = linear_model.LogisticRegression()

# 2. 学习模型
classifier.fit(X,Y) 
Y_predict = classifier.predict(X) # 模型分类
labels = classifier.classes_ # 获取分类标签
w = classifier.coef_ # 获取参数 W
b = classifier.intercept_ # 获取偏差b,或称W0

# 3. 衡量模型
accurency = classifier.score(X,Y)
PRF = classification_report(Y,Y_predict)


# 输出模型最优状态下的参数W和b,R²分数
for index,value in enumerate(zip(labels,w)):
    print(f"【{
      
      value[0]}】类别的参数W{
      
      index+1}:",value[1])
print("偏差b,或参数W0:",list(zip(labels,b)))
print("逻辑回归模型的分类【准备率】为:",accurency)
print("逻辑回归模型的精确率、召回率、F1分数为:")
print(PRF)

3. 输出

从下图输出结果可以看出,模型分类准确率、精确率、召回率、F1分数,都是满分!!!
在这里插入图片描述
模型的分类结果和实际分类对比也可以看出,模型分类和实际分类是一样的!
在这里插入图片描述

为什么会这么准确呢?

这是因为,原始数据的【推荐类型】是严格根据【推荐分值】进行分类的,原始数据的分类规则如下:
在这里插入图片描述
可见,在严格的线性分类规则下,逻辑回归是可以准确实现分类的。

猜你喜欢

转载自blog.csdn.net/weixin_50348308/article/details/130848603