[PYTHON] Méthode de régression linéaire utilisant Numpy

introduction

Cet article a été écrit par l'auteur https://www.udemy.com/share/1013lqB0AedFdUR34=0 Le but est de revoir ce que j'ai appris à

écrire

--Dérivation de la lumière de la méthode des moindres carrés --Convertissez de pandas DataFrame en tableau numpy et essayez de calculer

Dérivation de la méthode des moindres carrés

Supposons que vous receviez un ensemble de données [x, y]. x est la variable explicative et y est la variable objective. Par exemple, à mesure que la taille augmente, le poids augmente, donc dans ce cas x = taille et y = poids.

Et je veux prédire y à partir des données x données. Soit la valeur prédite à ce moment-là $ \ hat {y} $ et supposons l'expression relationnelle suivante.

\hat{y} = ax + b

Ici, le but est de rendre $ \ hat {y} $ aussi proche que possible de la valeur de réponse correcte $ y $. Donc

Error = y - \hat{y} = y - ax + b =0

Il est important de trouver a et b qui sont. Veuillez consulter les liens suivants pour les explications suivantes. http://arduinopid.web.fc2.com/P7.html

Régression linéaire utilisant numpy

Importez d'abord le module

python


import pandas as pd
from pandas import Series, DataFrame
import numpy as np

import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('whitegrid')
%matplotlib inline

Téléchargez également le jeu de données utilisé cette fois

python


from sklearn.datasets import load_boston

boston = load_boston()

Cette fois, nous utiliserons RM (nombre moyen de pièces par logement) et cible (prix) dans cette base de données. À l'origine, nous utilisons sns.pairplot et sns.jointplot pour rechercher des variables susceptibles d'avoir une relation de régression linéaire (proportionnelle), mais cette fois nous supposerons que ces deux variables ont une relation proportionnelle à l'avance.

python


boston_df = DataFrame(boston.data)
#Donnez un nom de colonne
boston_df.columns = boston.feature_names
#Copiez une nouvelle colonne car elle est difficile à comprendre avec la cible
boston_df['Price'] = boston.target
#Affichage du diagramme de dispersion et de la ligne de régression
sns.lmplot('RM', 'Price', data=boston_df)

b.png

Calculons cette ligne de régression. Utilisez np.linalg.lstsq (X, Y). Cependant, puisque ce X nécessite un réseau avec une forme spécifique, il est moulé à cet effet.

python


X = boston_df.RM
Y = boston_df.Price
#[x,1]En forme de
X = np.array([ [value[0], 1] for value in X])
#Convertir en type à virgule flottante
X = X.astype(np.float64)
#a,Chaque valeur prédite est stockée dans b
a, b = np.linalg.lstsq(X, Y)[0]

C'est la fin du calcul. Voyons le résultat

python


plt.plot(boston_df.RM, boston_df.Price, 'o')
x = boston_df.RM
plt.plot(x, a*x+b, 'r')

a.png

Supplément sur np.linalg.lstsq

Cliquez ici pour la documentation officielle https://numpy.org/doc/stable/reference/generated/numpy.linalg.lstsq.html#numpy.linalg.lstsq

numpy.linalg.lstsq(a, b, rcond='warn')

--Paramètres

np.linalg.lstsq (X, Y) [1] peut être utilisé pour extraire le total des résidus.

Recommended Posts

Méthode de régression linéaire utilisant Numpy
Régression linéaire
Méthode d'analyse de régression
Retour en utilisant le processus gaussien
Régression avec un modèle linéaire
Effectuer une analyse de régression avec NumPy
Liste des méthodes pratiques Numpy
Appel de méthode avec __getattr__
Régression du noyau avec Numpy uniquement
Régression de processus gaussien utilisant GPy
Machine Learning: Supervision - Régression linéaire
[Python] Méthode de calcul avec numpy
[Python] Régression LASSO avec contrainte d'équation utilisant la méthode du multiplicateur
Méthode de visualisation de données utilisant matplotlib (1)
Suppression de la FFT et des tendances avec Numpy
Méthode de visualisation de données utilisant matplotlib (2)
[Python] Régression linéaire avec scicit-learn
Régression linéaire en ligne en Python
Méthode de connexion SQL utilisant pyodbc
Essayez d'implémenter la régression linéaire à l'aide de Pytorch avec Google Colaboratory
Implémentation de la régression logistique avec NumPy
Régression linéaire robuste avec scikit-learn
[Statistiques] [R] Essayez d'utiliser la régression par points de division.
Les débutants en apprentissage automatique essaient la régression linéaire
Régression linéaire avec distribution t de Student
Méthode de suppression du bruit utilisant la conversion en ondelettes
Méthode de visualisation de données utilisant matplotlib (+ pandas) (3)
Binarisation d'images par analyse discriminante linéaire
Régression linéaire (pour les débutants) -Édition de code-
Méthode de visualisation de données utilisant matplotlib (+ pandas) (4)
Essayez de déduire à l'aide d'un modèle de régression linéaire sur Android [PyTorch Mobile]