Logistic Regression - Code

2019-12-02 Views Machine Learning | Programming | Python368字3 min read
featureimg

I have written logistic regression before. But I only introduce some basic knowledge about it. In this article, I will publish the code of the machine learning algorithm in python. One with scikit-learn library; Other is written based on Gradient descent algorithm.

If you start to learn Logistic Regression recently, I recommend you to read Logistic Regression first. The following code is partially inspired from 【机器学习】求解逻辑回归参数(三种方法代码实现)

First Code

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer

bc = load_breast_cancer() # Load test data
X = bc.data
y = bc.target
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2) # Split training and test data

lr = LogisticRegression()
lr.fit(X_train,y_train) # Train the model
print(lr.score(X_test,y_test))

Second code

import numpy as np
from sklearn.datasets import load_breast_cancer

def sigmoid(theta1, x, theta0): # Define sigmoid function
    z = (theta1 * x + theta0).astype("float_")
    return 1.0 / (1.0 + np.exp(-z)) # Return a list of the results predicted by sigmoid function

class LogisticRegression:
    theta_1 = 0 # Define the coefficient
    theta_0 = 0
    flag = 0 # Distiguish whether the model was trained
    
    def gradientDecline(self, theta1, x, theta0, y): # Define the Gradient Decline method
        sp = sigmoid(theta1,x,theta0)
        return 1/len(y) * np.sum((y - sp) * x), 1/len(y) * np.sum(y - sp)

    def fit(self, x, y,alpha = 0.2,trials = 20): # alpha is the learning rate, trials is the trials
        theta1 = 0.1
        theta0 = 0.2

        for i in range(0,20):
            n1, n0 = self.gradientDecline(theta1,x,theta0,y)
            theta1 = theta1 - alpha * n1
            theta0 = theta0 - alpha * n0

        print("a = " + str(theta1))
        print("b = " + str(theta0))
        
        self.theta_1 = theta1
        self.theta_2 = theta2
        self.flag = 1

注:算法的核心思想是梯度下降算法,针对不同的矩阵的数据需要进行适当调整;模型拟合可以通过分数可以通过 F1-score 来衡量,具体可以参考逻辑回归


EOF
本文章采用CC BY-NC-SA 4.0进行许可。转载请注明出处!
上一篇

Wandering in the world - Liberal imagination


下一篇

Linear Regression - Code