1

我想在 python 中从头开始实现 Logisitic 回归。以下是其中的功能:

  1. 乙状结肠
  2. 成本
  3. fminunc
  4. 评估逻辑回归

我想知道,在 python 中从头开始会是一个很好的开始。关于如何以及什么是好的任何指导。我知道这些函数的理论,但正在寻找更好的 Pythonic 答案。

我使用了 octave,但我不知道如何在 python 中开始,因为 OCtave 已经设置了这些包来完成这项工作。

4

2 回答 2

2

您可能想尝试将您的 octave 代码转换为 python 并查看发生了什么。您也可以使用 python 包为您执行此操作。查看关于逻辑回归的 scikit-learn 。此博客中还有一个简单的示例。

于 2013-12-02T13:38:31.560 回答
1

为了实现逻辑回归,您可以考虑以下两种方法:

  1. 考虑线性回归的工作原理。将 Sigmoid 函数应用于线性回归假设并运行梯度下降直到收敛。或应用基于指数的 Softmax 函数来排除较低的发生可能性。

    def logistic_regression(x, y,alpha=0.05,lamda=0):
        '''
        Logistic regression for datasets
        '''
        m,n=np.shape(x)
        theta=np.ones(n)
        xTrans = x.transpose()
        oldcost=0.0
        value=True
        while(value):
            hypothesis = np.dot(x, theta)
            logistic=hypothesis/(np.exp(-hypothesis)+1)
            reg = (lamda/2*m)*np.sum(np.power(theta,2))
            loss = logistic - y
            cost = np.sum(loss ** 2)
            #print(cost)
            # avg cost per example (the 2 in 2*m doesn't really matter here.
            # But to be consistent with the gradient, I include it)
            # avg gradient per example
            gradient = np.dot(xTrans, loss)/m
            # update
            if(reg):
                cost=cost+reg
                theta = (theta - (alpha) * (gradient+reg))
            else:
                theta=theta -(alpha/m) * gradient
            if(oldcost==cost):
                value=False
            else:
                oldcost=cost
        print(accuracy(theta,m,y,x))
        return theta,accuracy(theta,m,y,x)
    
于 2017-06-19T11:48:20.227 回答