机器学习基本算法(逻辑回归)

需要注意的是几个关键点:
1 表达式(乘积)
2 取对数(加)
3 梯度下降
4 随机梯度下降
5 正则化

实现代码:

import numpy as np
import math
class LogisticRegression:
    def __init__(self):
        self.W = None
    def train(self,dataSet,labels):
        self.W = self.gradientAscent(dataSet,labels)
    def predict(self,data):
        return self.sigmoid(sum(self.W*data))
    def sigmoid(self,x):
        '''
        逻辑回归的判别函数
        '''
        return 1.0/(1.0+math.exp(-x))

    def gradientAscent(self,dataSet,labels):
        '''
        输入参数datas:训练数据矩阵,每一行为一个数据
        输入参数labels:标签数据,为一个值。
        要求参数数据匹配
        '''
        dataX = np.mat(dataSet)
        #每列代表一个特征,每行代表不同的训练样本。
        dataY = np.mat(labels).transpose()
        #标签,将行向量转置为列向量
        m,n = np.shape(dataX)
        alpha = 0.001
        #步长,也就是学习率
        itera_num = 1000
        #迭代次数
        W = np.ones((n,1))
        for i in range(itera_num):
            H = self.sigmoid(dataX * W)
            # H 是一个列向量,元素个数==m
            error = dataY - H
            W = W + alpha * dataX.transpose()*error
        return W

    def stochasticGradientAscent(self,dataSet,labels):
        '''
        随机梯度上升法,避免每次更新参数都需要遍历整个数据集一边
        '''
        m,n = np.shape(dataSet)
        alpha = 0.01
        W = np.ones(n)
        for i in range(m):
            h = self.sigmoid(sum(W*dataSet[i]))
            error = labels[i] - h
            W = W + alpha*error*dataSet[i]
        return W
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值