# -*- 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':
逻辑回归的python实现代码
最新推荐文章于 2024-04-30 04:29:38 发布