量化交易之机器学习篇 - 实现逻辑回归模型的两种方式


import numpy as np

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

def initialize_params(dims):
    """
    参数初始化函数
    """
    W = np.zeros((dims, 1))
    b = 0

    return W, b

def logistic(X, y, W, b):
    """

    :param X: 输入特征矩阵
    :param y: 输入标签向量
    :param W: 权重系数
    :param b: 偏置参数
    :return:
    """

    num_train = X.shape[0]
    num_feature = X.shape[1]

    # 对数几率回归模型输出
    a = sigmoid(x=(np.dot(X, W) + b))

    # 交叉熵损失
    cost = -1 / num_train * np.sum(y*np.log(a) + (1-y)*np.log(1-a))

    # 权重梯度
    dW = np.dot(X.T, (a-y)) / num_train

    # 偏置梯度
    db = np.sum(a-y) / num_train

    # 压缩损失数组维度
    cost = np.squeeze(cost)

    """
    a: 对数几率回归模型输出
    cost: 损失
    dW: 权重梯度
    db: 偏置梯度
    """
    return a, cost, dW, db

def logistic_train(X, y, learning_rate, epochs):

    W, b = initialize_params(di
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值