逻辑回归的python实现代码

# -*- coding: utf-8 -*-
import numpy as np
import operator
import matplotlib
import matplotlib.pyplot as plt
import pandas as pd
import math
import time

#计算sigmoid函数
def sigmoid(inX):
    return 1/(1+np.exp(-inX))

### $梯度上升的公式: w = w +af(x) $

#逻辑回归训练模型   
#输入为训练集中的数值和属性,以及算法的选择
#返回各个特征的权重值代表回归系数,并且计算训练的时间
def trainLogRegres(train_x, train_y, opts):
                                       
    startTime = time.time()                           # 计算时间
    #train_x = np.mat(train_x)
    
    numSamples, numFeatures = np.shape(train_x)       #获取数据集的维度
    
    alpha = opts['alpha']                             #获取学习的步长
    maxIter = opts['maxIter']                         #选择迭代的次数
    weights = np.ones((numFeatures, 1))               #每个特征一个权值,初始化数值为1
    
    
    #通过梯度上升算法进行优化
    for k in range(maxIter):              
        #迭代,接下来选择计算w的方式1.
        if opts['optimizeType'] == 'gradUp':                            #梯度上升优化算法。
            output = sigmoid(train_x * weights)                         #矩阵运算,计算量大,计算复杂度高,每次更新时都要遍历。
            error = train_y - output                                    #错误率
            weights += alpha * train_x.transpose() * error    
            
        elif opts['optimizeType'] == 'stocGradUp':                    
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值