手动实现逻辑回归

手动实现算法的三个步骤

1.定义预测函数.sigmoid
g ( z ) = 1 1 + e − z g(z) = \frac{1}{1+e^{-z}} g(z)=1+ez1
2.定义损失函数(目标)函数
在这里插入图片描述

3.使用梯度下降求损失函数最小时的系数

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

def sigmoid(W,B):
    linear = np.dot(X,W) + B
    return 1/ (1 + np.exp(-linear))

def loss(y_true,y_pred):
    return -np.sum(y_true * np.log(y_pred)+(1-y_true)*np.log(1-y_pred))/100


W = np.random.randn(2) * 0.01
B = 0

learning_rate = 0.01

max_iter = 10000

i = 0
while True:
    y_pred = sigmoid(W,B)
#     计算梯度/导数
    dW = np.dot((y_pred - y_true),X)/100
    dB = np.sum(y_pred - y_true)/100
    
    W = W - learning_rate * dW
    B = B - learning_rate * dB
    
#     每隔100输出中间过程
    if i % 100 == 0:
        # 计算准确率和损失函数
        # 设定阈值把概率转换为类别
        # 假设阈值为0.5, >0.5为正例
        y_ = (y_pred >= 0.5)
        accuracy=(y_ == y_true).mean()
        
        y_pred = sigmoid(W,B)
        cost=loss(y_true,y_pred)
        print(f'第{i}次训练,损失:{cost},准确率:{accuracy}')
        
    i += 1
    if i > max_iter:
        break
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值