Explication du concept d'analyse de régression à l'aide de Python Extra 1

Méthode au carré minimal comprise par animation

Explication of the concept of regression analysis using Python Part 1 utilise la méthode des moindres carrés pour tracer la ligne droite optimale pour les données, et la ligne droite et les données J'ai expliqué de définir les paramètres pour minimiser la différence (erreur) de. Ici, comme édition supplémentaire, j'ai essayé de dessiner un graphique en animant la façon dont chaque paramètre change. Si vous essayez de cette façon, vous obtiendrez une image.

La "somme des erreurs carrées" dans le titre du graphique est la somme des carrés des erreurs, donc la meilleure position est là où c'est la plus petite.

L'inclinaison change

Voyons d'abord comment l'inclinaison change.

regression_anim.gif

J'utilise la fonction matplotlib.animation.FuncAnimation pour générer l'animation avec matplotlib. Sortons la fonction qui dessine le graphique et prenons la valeur à modifier par animation comme argument. Ici, nous créons une fonction animée. Cette fonction d'animation est appelée dans la fonction FuncAnimation et la valeur définie dans nframe de 0 à frames est définie dans l'ordre en tant qu'argument et appelée.

import numpy as np
import matplotlib.pyplot as plt
from moviepy.editor import *
from matplotlib import animation as ani

data= np.loadtxt('cars.csv',delimiter=',',skiprows=1)
data[:,1] = map(lambda x: x * 1.61, data[:,1])    #km de mph/Convertir en h
data[:,2] = map(lambda y: y * 0.3048, data[:,2])  #Convertir de ft en m

def animate(nframe):
    plt.clf()        # clear graph canvas
    slope = 0.746606334842 * (float(nframe)/50) *2   #La pente change à mesure que la nframe de l'argument change
    intercept = - 5.41583710407
    x = np.linspace(0,50,50)
    y = slope * x + intercept
    plt.ylim(-10,80)
    plt.xlim(0,50)
    plt.xlabel("speed(km/h)")
    plt.ylabel("distance(m)")
    plt.scatter(data[:,1],data[:,2])
    # draw errors
    se = 0
    i = 0
    for d in data:
        plt.plot([d[1],d[1]],[d[2],d[1]*slope+intercept],"k")
        se += (y[i] - d[2]) ** 2
        i += 1
    plt.title("Stopping Distances of Cars (slope=%.3f, sum of square errors=%5d)" % (slope, se))
    # based line: y = 0.74x -5
    plt.plot(x,y)


fig = plt.figure(figsize=(10,6))

anim = ani.FuncAnimation(fig, animate, frames=50, blit=True)

anim.save('regression_anim.mp4', fps=13)

clip = VideoFileClip("regression_anim.mp4")
clip.write_gif("regression_anim.gif")


Comment les sections changent

Contrairement à avant, la section se déplace.

regression_anim_i.gif


def animate(nframe):
    plt.clf()        # clear graph canvas
    slope = 0.746606334842 
    intercept = -5.41583710407 + (float(nframe-25)/50) * 50   #Intercepter les modifications lorsque la nframe de l'argument change
    x = np.linspace(0,50,50)
    y = slope * x + intercept
    plt.ylim(-30,80)
    plt.xlim(0,50)
    plt.xlabel("speed(km/h)")
    plt.ylabel("distance(m)")
    plt.scatter(data[:,1],data[:,2])
    # draw errors
    se = 0
    i = 0
    for d in data:
        plt.plot([d[1],d[1]],[d[2],d[1]*slope+intercept],"k")
        se += (y[i] - d[2]) ** 2
        i += 1
    plt.title("Stopping Distances of Cars (slope=%.3f, sum of square errors=%5d)" % (slope, se))
    # based line: y = 0.74x -5
    plt.plot(x,y)


fig = plt.figure(figsize=(10,6))

anim = ani.FuncAnimation(fig, animate, frames=50, blit=True)

anim.save('regression_anim_i.mp4', fps=13)

clip = VideoFileClip("regression_anim_i.mp4")
clip.write_gif("regression_anim_i.gif")

Recommended Posts

Explication du concept d'analyse de régression à l'aide de Python Extra 1
Explication du concept d'analyse de régression à l'aide de python Partie 2
Explication du concept d'analyse de régression à l'aide de Python Partie 1
Calculer le coefficient de régression d'une analyse de régression simple avec python
Revoir le concept et la terminologie de la régression
Analyse de la variation temporelle des trous noirs en utilisant Python
le zen de Python
Bases de l'analyse de régression
Analyse de régression avec Python
Prédire l'avenir des tendances démographiques dans la ville de Numazu par analyse de régression chronologique à l'aide de Prophet
[Python] [Word] [python-docx] Analyse simple des données de diff en utilisant python
Découpez une partie de la chaîne à l'aide d'une tranche Python
Implémentation python de la classe de régression linéaire bayésienne
La douleur de gRPC en utilisant Python. Novembre 2019. (Mémo personnel)
Étude de Python Hour8: Utilisation de packages
Vers la retraite de Python2
Analyse statique des programmes Python
python: principes de base de l'utilisation de scikit-learn ①
Analyse de régression simple avec Python
À propos des fonctionnalités de Python
Analyse de données à l'aide de pandas python
Le pouvoir des pandas: Python
Afficher à l'aide du module python du backend mobile Nifty Cloud
[Python] Régression LASSO avec contrainte d'équation utilisant la méthode du multiplicateur
L'histoire de Python et l'histoire de NaN
Traitement du langage naturel japonais utilisant Python3 (4) Analyse des émotions par régression logistique
Première analyse de régression simple en Python
[Python] La pierre d'achoppement de l'importation
First Python 3 ~ Le début de la répétition ~
[Python] J'ai écrit la route du typhon sur la carte en utilisant le folium
Python: Application de l'apprentissage supervisé (retour)
[Python] PCA scratch dans l'exemple de "Introduction à la méthode d'analyse multivariée"
Existence du point de vue de Python
[Python] Notification LINE des dernières informations à l'aide de la recherche automatique Twitter
pyenv-changer la version python de virtualenv
[Python] J'ai expliqué en détail la théorie et la mise en œuvre de la régression logistique
[Didacticiel d'analyse Python dans la base de données avec SQL Server 2017] Étape 6: Utilisation du modèle
[Python] Comprendre le potentiel_field_planning de Python Robotics
Évaluer les performances d'un modèle de régression simple à l'aide de la validation d'intersection LeaveOneOut
Revue des bases de Python (FizzBuzz)
Implémentation des notifications de bureau à l'aide de Python
Obtenez et définissez la valeur du menu déroulant en utilisant Python et Selenium
Extraire le fichier targz en utilisant python
Essayez d'utiliser le module Python Cmd
De l'introduction de JUMAN ++ à l'analyse morphologique du japonais avec Python
Recommandation d'analyse des données à l'aide de MessagePack
Analyse de régression logistique Self-made avec python
À propos de la liste de base des bases de Python
Supplément à l'explication de vscode
Tutoriel de recommandation utilisant l'analyse d'association (concept)
Apprenez les bases de Python ① Débutants élémentaires
[Explication AtCoder] Contrôlez les problèmes A, B, C d'ABC182 avec Python!
Affichez le résultat de l'analyse vidéo à l'aide de l'API Cloud Video Intelligence de Colaboratory.