[PYTHON] Implémentation de la régression logistique avec NumPy

Si vous utilisez scikit-learn, ce sera un moment, mais il est également bon de le mettre en œuvre vous-même en tant qu'étude.

Dans l'article d'origine, la classification multi-classes et train_test_split étaient hors de portée, donc

Il est simplifié en un problème à deux classes et évalué à l'aide des mêmes données que les données d'apprentissage.

Veuillez vous référer à l'article suivant pour plus de détails. Apprentissage automatique à partir de zéro 4e "régression logistique"

from sklearn.datasets import load_iris
import numpy as np
iris = load_iris()
X_org = iris.data
y_org = iris.target
#Simplifiez le problème (voir article précédent)
idx = [y_org != 2] 
X = X_org[idx][:,:2]
y = y_org[idx]

class LogisticRegression:
    def __init__(self, n_feature=2):
        self.w = np.random.rand(n_feature + 1) #Terme de biais
        self.eta = 1e-2 #Taux d'apprentissage
        self.n_iter = 1000 #Nombre de mises à jour des paramètres
        self.loss = []
    def fit(self, x, y): #Apprentissage
        for i in range(self.n_iter):
            self._update(x, y)     
        
    def predict(self, x): #Prévoir
        x = np.c_[x,np.ones(len(x))] #Terme de biais
        return self._forward(x)
        
    def _forward(self, x): #Méthode interne.
        d = np.dot(x, self.w)
        return np.exp(d) / (1 + np.exp(d))
    
    def _diff(self, x, y): #Méthode interne. Calculez la différence entre le résultat et la bonne réponse.
        diff = self._forward(x) - y
        return diff
    
    def _update(self, x, y): #Méthode interne. Mettez à jour les paramètres une fois.
        x = np.c_[x,np.ones(len(x))] #Terme de biais
        self.w -= self.eta * np.dot(self._diff(x, y),  x) #Prenez le produit intérieur et effacez la dimension du nombre d'échantillons

lr = LogisticRegression()
lr.fit(X,y) #Apprentissage
pred = (lr.predict(X) > 0.5).astype(np.int) #Prévisions et évaluation
print (np.mean(pred == y)) #Taux de précision moyen

Ensuite, cet article implémente train_test_split. Apprentissage automatique à partir de zéro 5ème "Données d'entraînement et données de test"

Recommended Posts

Implémentation de la régression logistique avec NumPy
Régression du noyau avec Numpy uniquement
Retour logistique
Analyse de régression logistique Self-made avec python
Essayez Theano avec les données MNIST de Kaggle ~ Retour logistique ~
Implémenter un modèle de régression logistique en temps discret avec stan
Implémentation de la régression logistique avec la méthode d'optimisation des groupes de particules
Régression linéaire avec statsmodels
Régression logistique d'apprentissage automatique
Moyenne mobile avec numpy
Régression avec un modèle linéaire
Premiers pas avec Numpy
Apprenez avec Chemo Informatics NumPy
Code de bourdonnement avec numpy
Apprenez en implémentant avec Scipy Les bases de la régression logistique et du perceptron multicouche
Essayez la régression avec TensorFlow
Étendre NumPy avec Rust
Précautions lors de l'exécution de la régression logistique avec Statsmodels
Résolution du problème de l'iris avec scikit-learn ver1.0 (régression logistique)
J'ai écrit GP avec numpy
Implémentation CNN avec juste numpy
Génération artificielle de données avec numpy
Analyse de régression multiple avec Keras
[Python] Méthode de calcul avec numpy
Essayez l'opération matricielle avec NumPy
Ridge retour avec Mllib à Pyspark
Animation de l'équation de diffusion avec NumPy
Simulation de remboursement de dette avec numpy
Essayez d'implémenter XOR avec PyTorch
Implémentation de SMO avec Python + NumPy
Coller les chaînes avec Numpy
Méthode de régression linéaire utilisant Numpy
Essayez d'implémenter le parfum avec Go
Gérez les tableaux numpy avec f2py
[Python] Régression linéaire avec scicit-learn
Utilisez OpenBLAS avec numpy, scipy
Régression linéaire robuste avec scikit-learn
Évitez d'implémenter des fonctions inutiles avec l'héritage
Effectuez un ajustement carré minimum avec numpy.
Retour logistique (pour les débutants) -Code Edition-
Dessinez un beau cercle avec numpy
Appliquer la fonction d'influence à la régression logistique
Régression linéaire avec distribution t de Student
J'ai essayé d'implémenter DeepPose avec PyTorch
Implémenter Keras LSTM feed forward avec numpy
Extraire plusieurs éléments avec le tableau Numpy
Qu'est-ce que l'analyse de régression logistique à plusieurs termes?
Prédiction des ondes de Sin (retour) avec Pytorch