逻辑回归----线性逻辑回归与非线性逻辑回归

线性逻辑回归

逻辑回归的预测函数

在这里插入图片描述

逻辑回归的代价函数

如果采用线性回归的代价函数的形式,随着自变量 θ \theta θ的变化将会出现很多的局部最小值(如下图左边所示),不适合使用梯度下降法求解参数。在这里插入图片描述
所以采用了如下代价函数:
在这里插入图片描述
所以,合并后的损失函数如下:
在这里插入图片描述
利用梯度下降法更新参数如下:
在这里插入图片描述

在这里插入图片描述

逻辑回归正则化:

在这里插入图片描述

python梯度下降法实现逻辑线性回归:

import matplotlib.pyplot as plt
import numpy as np
from sklearn.metrics import classification_report
from sklearn import preprocessing

# 数据是否需要标准化
scale = False

# 载入数据
data = np.genfromtxt("LR-testSet.csv", delimiter=",")
x_data = data[:,:-1]# x_data含有两列,表示两个特征(这里表示坐标)
y_data = data[:,-1,np.newaxis]# y_data含有一列,表示一个结果
    
# 定义绘图函数
def plot():
    x0 = []
    x1 = []
    y0 = []
    y1 = []
    # 切分不同类别的数据
    for i in range(len(x_data)):
        if y_data[i]==0:# 是类别0则将他的两个特征分别加入x0,y0,这里的两个特征其实就是坐标
            x0.append(x_data[i,0])
            y0.append(x_data[i,1])
        else:# 是类别1则将他的两个特征分别加入x1,y1
            x1.append(x_data[i,0])
            y1.append(x_data[i,1])

    # 画图
    scatter0 = plt.scatter(x0, y0, c='b', marker='o')
    scatter1 = plt.scatter(x1, y1, c='r', marker='x')
    #画图例
    plt.legend(handles=[scatter0,scatter1],labels=['label0','label1'],loc='best')
   


# 给样本添加偏置项,添加一列1到第0列
X_data = np.concatenate((np.ones((100,1)),x_data),axis=1)


def sigmoid(x):#定义分类函数。可以传入一个(1,n)的矩阵,得到一个(1,n)的结果
    return 1.0/(1+np.exp(-x))


# 代价函数
def cost(xMat, yMat, ws):
    left = np.multiply(yMat, np.log(sigmoid(xMat*ws)))# (m,1)*((m,n)*(n,1))=(m,1)对于矩阵,*是矩阵相乘,multiply是对应位置相乘
    right = np.multiply(1 - yMat, np.log(1 - sigmoid(xMat*ws)))
    return np.sum(left + right) / -(len(xMat))# 将每一组的损失加起来求平均表示当前的平均损失 


# 梯度下降法,需要接受一个带有偏置的特征二维数组xArr和结果标签二维数组yArr
def gradAscent(xArr, yArr):
    if scale == True:
        xArr = preprocessing.scale(xArr) #数据集的标准化
       
    # 将数组转为矩阵方便下面矩阵计算
    xMat = np.mat(xArr)
    yMat = np.mat(yArr)

    #学习率和训练次数
    lr = 0.001
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值