逻辑回归:用于解决分类问题的一种模型。根据数据特征或属性,计算其归属于某一类别的概率

P(x),根据概率数值判断其所属类别。主要应用场景:二分类问题。

考试预测通过实战:

examdata.csv数据如图:

Pass等于0划分为考试未通过,Pass等于1划分为考试通过。

边界函数: theta0+theta1 * x1 +theta2 * X2 = 0

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
data=pd.read_csv('examdata.csv')

fig1 = plt.figure()
plt.scatter(data.loc[:,'Exam1'],data.loc[:,'Exam2'])
plt.title('Exam1 - Exam2')
plt.xlabel('Exam1')
plt.ylabel('Exam2')
plt.show()
# add label mask
mask=data.loc[:,'Pass'] == 1

fig2 = plt.figure()
passed = plt.scatter(data.loc[:,'Exam1'][mask],data.loc[:,'Exam2'][mask])  # 筛选通过考试的用户
failed = plt.scatter(data.loc[:,'Exam1'][~mask],data.loc[:,'Exam2'][~mask])  #筛选未通过考试的用户
plt.legend((passed, failed), ('passed', 'failed'))  # 增加一个右上角的标签
plt.title('Exam1 - Exam2')
plt.xlabel('Exam1')
plt.ylabel('Exam2')
plt.show()

# define X,y
X = data.drop(['Pass'],axis= 1)
y = data.loc[:,'Pass']
X1 = data.loc[:,'Exam1']
X2 = data.loc[:,'Exam2']

# establish the model and train it
from sklearn.linear_model import  LogisticRegression
LR = LogisticRegression()
LR.fit(X,y)

# show the predicted result and its accuracy
y_predict = LR.predict(X)
print(y_predict)

# evaluate the model
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y,y_predict)
print(accuracy)

# 使用模型进行预测
# exam1=70,exam2=65
y_test=LR.predict([[70,65]])
print('passed' if y_test==1 else 'failed')

# 输出边界函数:
theta0 = LR.intercept_
theta1,theta2 = LR.coef_[0][0],LR.coef_[0][1] # 两个变量对应两个θ
print(theta0,theta1,theta2)
# theta0+theta1 * x1 +theta2 * X2 = 0
X2_new = -(theta0+theta1*X1)/theta2  # 用X1反推X2_new
print(X2_new)

fig3 = plt.figure()
passed = plt.scatter(data.loc[:,'Exam1'][mask],data.loc[:,'Exam2'][mask])
failed = plt.scatter(data.loc[:,'Exam1'][~mask],data.loc[:,'Exam2'][~mask])
plt.legend((passed, failed), ('passed', 'failed'))
plt.plot(X1,X2_new)  # 画出边界函数
plt.title('Exam1 - Exam2')
plt.xlabel('Exam1')
plt.ylabel('Exam2')
plt.show()




运行结果:

初始数据拟合图:

数据分类图:

数据分类+边界函数图:

控制台结果:

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐