[PYTHON] Effectuer une analyse de régression avec NumPy

L'analyse de régression a été mentionnée plus tôt dans The topic of linear regression.

Analyse de régression avec NumPy

Maintenant, écrivons le code et effectuons une analyse de régression. np.polyfit et np.polyval /reference/generated/numpy.polyval.html#numpy.polyval) peut être utilisé pour effectuer une analyse de régression de deux variables avec une équation d'ordre n.

Pour plus de détails, il est préférable de se référer au document à partir du lien ci-dessus, mais c'est comme suit.

import numpy as np
import matplotlib.pyplot as plt

x = np.array([0.0, 1.0, 2.0, 3.0,  4.0,  5.0])
y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])
z = np.polyfit(x, y, 3)

p = np.poly1d(z)
p30 = np.poly1d(np.polyfit(x, y, 30))
xp = np.linspace(-2, 6, 100)

plt.plot(x, y, '.', xp, p(xp), '-', xp, p30(xp), '*')
plt.ylim(-2,2)
plt.show()
plt.savefig('image.png')

image.png

En ce moment Pour les équations linéaires, p [0]: inclinaison et p [1]: section. Pour l'équation d'ordre N, p [0] * t ** (N-1) + p [1] * t ** (N-2) + ... + p [N-2] * t + p [N-1] ] est.

En ce qui concerne la méthode des moindres carrés dont j'ai déjà parlé, les chaînes de données {(x_1, y_1), (x_2, y_2), ... (x_n ,, Déterminez le modèle qui minimise la somme des carrés des résidus pour y_n)}. A ce moment, on suppose que la dispersion de la distribution d'erreur des valeurs observées est constante.

Analyse de régression multiple

L'analyse de régression avec m modèles avec des variables indépendantes est [Analyse de régression multiple](http://en.wikipedia.org/wiki/%E9%87%8D%E5%9B%9E%E5%B8%B0%E5% 88% 86% E6% 9E% 90).

z = ax + by + c

Je veux trouver la formule.

x = [9.83, -9.97, -3.91, -3.94, -13.67, -14.04, 4.81, 7.65, 5.50, -3.34]
y = [-5.50, -13.53, -1.23, 6.07, 1.94, 2.79, -5.43, 15.57, 7.26, 1.34]
z = [635.99, 163.78, 86.94, 245.35, 1132.88, 1239.55, 214.01, 67.94, -1.48, 104.18]

import numpy as np
from scipy import linalg as LA

N = len(x)
G = np.array([x, y, np.ones(N)]).T
result = LA.solve(G.T.dot(G), G.T.dot(z))

print(result)

Cette [ -30.02043308 3.55275314 322.33397214] Peut être obtenu

z = -30.0x + 3.55y + 322

Est obtenu, et c'est la solution.

référence

Matériel du groupe d'étude des mathématiques 2013 pour les programmeurs http://nineties.github.io/math-seminar/

Recommended Posts

Effectuer une analyse de régression avec NumPy
Régression du noyau avec Numpy uniquement
Analyse de régression multiple avec Keras
Implémentation de la régression logistique avec NumPy
Analyse de régression logistique Self-made avec python
Analyse de régression de Poisson
Méthode d'analyse de régression
Apprentissage automatique avec python (2) Analyse de régression simple
Analyse de données avec python 2
Analyse du panier avec Spark (1)
Régression linéaire avec statsmodels
Moyenne mobile avec numpy
Analyse de dépendance avec CaboCha
Analyse vocale par python
Régression avec un modèle linéaire
Premiers pas avec Numpy
Bases de l'analyse de régression
Apprenez avec Chemo Informatics NumPy
Code de bourdonnement avec numpy
Analyse vocale par python
Analyse dynamique par Valgrind
Essayez la régression avec TensorFlow
Analyse de données avec Python
Analyse de régression LASSO facile avec Python (pas de théorie)
Étendre NumPy avec Rust
Analyse de régression avec Python
Calculer le coefficient de régression d'une analyse de régression simple avec python
J'ai écrit GP avec numpy
[Python] Analyse morphologique avec MeCab
Implémentation CNN avec juste numpy
Génération artificielle de données avec numpy
[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
Analyse des émotions par Python (word2vec)
Simulation de remboursement de dette avec numpy
Implémentation de SMO avec Python + NumPy
Coller les chaînes avec Numpy
Analyse de texture apprise avec la pyradiomique
Analyse de squelette planaire avec Python
Analyse morphologique japonaise avec Python
Méthode de régression linéaire utilisant Numpy
Gérez les tableaux numpy avec f2py
Analyse de régression simple avec Python
[Python] Régression linéaire avec scicit-learn
Utilisez OpenBLAS avec numpy, scipy
Analyse des secousses musculaires avec Python
[PowerShell] Analyse morphologique avec SudachiPy
Analyse des émotions par SMS avec ML-Ask
Régression linéaire robuste avec scikit-learn
Effectuez un ajustement carré minimum avec numpy.
Première analyse de régression simple en Python
Analyse de la structure du squelette en trois dimensions avec Python
Analyse d'impédance (EIS) avec python [impedance.py]
Algorithme d'apprentissage automatique (analyse de régression multiple)
Dessinez un beau cercle avec numpy
Text mining avec Python ① Analyse morphologique
Algorithme d'apprentissage automatique (analyse de régression unique)
Régression linéaire avec distribution t de Student