逻辑回归模型案例

逻辑回归模型案例

我们将建立一个逻辑回归模型来预测一个学生是否被大学录取。假设你是一个大学系的管理员,你想根据两次考试的结果来决定每个申请人的录取机会。你有以前的申请人的历史数据,你可以用它作为逻辑回归的训练集。对于每一个培训例子,你有两个考试的申请人的分数和录取决定。为了做到这一点,我们将建立一个分类模型,根据考试成绩估计入学概率。

# 数据分析三大件
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
# 读入数据
import os
path = 'data' + os.sep + 'LogiReg_data.txt'
pdData = pd.read_csv(path,header=None,names=['Exam 1', 'Exam 2', 'Admitted'])
pdData.head()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QPtEVW1m-1641793519286)(F:\Python学习\唐宇迪-python数据分析与机器学习实战\学习随笔\07梯度下降求解逻辑回归\笔记图片\image-20220110132823894.png)]

# 观察数据维度,第一维表示样本的个数,第二维表示当前每一个样本有三列值
pdData.shape

(100, 3)

# 画图观察第三列是什么样的
# 指定正列负列
positive = pdData[pdData["Admitted"] == 1]
negative = pdData[pdData["Admitted"] == 0]
# 指定画图域
fig,ax = plt.subplots(figsize=(10,5))
# 散点图;c定义的是颜色
ax.scatter(positive["Exam 1"], positive["Exam 2"], s=30, c="b", marker="o", label="Admitted")
ax.scatter(negative["Exam 1"], negative["Exam 2"], s=30, c="r", marker="x", label="Not Admitted")
ax.legend()
ax.set_xlabel("Exam 1 Score")
ax.set_ylabel("Exam 2 Score")            

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R62plvFj-1641793519287)(F:\Python学习\唐宇迪-python数据分析与机器学习实战\学习随笔\07梯度下降求解逻辑回归\笔记图片\image-20220110132935578.png)]

The logistic regression

目标:建立分类器(求解出三个参数 $\theta_0 \theta_1 \theta_2 $)

设定阈值,根据阈值判断录取结果

要完成的模块

sigmoid : 映射到概率的函数

model : 返回预测结果值

cost : 根据参数计算损失

gradient : 计算每个参数的梯度方向

descent : 进行参数更新

accuracy: 计算精度

sigmoid 函数

g ( z ) = 1 1 + e − z g(z) = \frac{1}{1+e^{-z}} g(z)=1+ez1

def sigmoid(z):
    return 1 / (1+np.exp(-z))
# 画图展示sigmoid 函数
nums = np.arange(-10, 10, step=1)
fig,ax = plt.subplots(figsize=(12,4))
ax.plot(nums, sigmoid(nums),"r")

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5mP0ji9J-1641793519287)(F:\Python学习\唐宇迪-python数据分析与机器学习实战\学习随笔\07梯度下降求解逻辑回归\笔记图片\image-20220110133102888.png)]

Sigmoid

  • g : R → [ 0 , 1 ] g:\mathbb{R} \to [0,1] g:R[0,1]
  • g ( 0 ) = 0.5 g(0)=0.5 g(0)=0.5
  • g ( − ∞ ) = 0 g(- \infty)=0 g()=0
  • g ( + ∞ ) = 1 g(+ \infty)=1 g(+)=1
# np.dot矩阵乘法
def model(X, theta):
    return sigmoid(np.dot(X,theta.T))

( θ 0 θ 1 θ 2 )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值