1.《机器学习实战》LogisticPython回归源码实现

本文介绍了一种实现Logistic回归的梯度上升优化算法。通过读取数据集,利用sigmoid函数进行概率预测,并通过迭代更新权重向量来获得最佳回归系数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from numpy import *
import numpy as np
#Logistic回归梯度上升优化算法
#读取数据
def loadDataSet():
    dataMat = []
    labelMat = []
    fr = open('TestSet.txt')
    for line in fr.readlines():
        lineArr = line.strip().split('\t')
        # 为了方便计算,我们将 X0 的值设为 1.0 ,也就是在每一行的开头添加一个 1.0 作为 X0
        dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])])
        labelMat.append(int(lineArr[2]))
    return dataMat, labelMat

#定义sigmoid函数
def sigmoid(inX):
    return 1.0/(1+np.exp(-inX))

#输入数据特征与数据的类别标签
#返回最佳回归系数(weights)
def gradAscent(dataMatIn, classLabels):
    #转换为numpy型
    #将mXn的二维数组,转化为m行,n列的矩阵
    dataMatrix = np.mat(dataMatIn) 
    # 转化为矩阵[[0,1,0,1,0,1.....]],并转制[[0],[1],[0].....] 
    # transpose() 行列转置函数
    # 将行向量转化为列向量   =>  矩阵的转置
    labelMat = np.mat(classLabels).transpose()
    # m->数据量,样本数 n->特征数
    #m:矩阵的行数,n:矩阵的列数
    m,n = np.shape(dataMatrix)
    alpha = 0.001 #步长
    maxCycles = 500 #迭代次数
    #初始化权值向量,每个维度均为1.0
    #创建一个n行1列的矩阵
    weights = np.ones((n,1))
    for k in range(maxCycles):
        #求当前sigmoid函数的值
        h = sigmoid(dataMatrix * weights)
        error = (labelMat - h)
        weights = weights + alpha * dataMatrix.transpose() * error
    return array(weights)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值