Apprentissage automatique avec python (2) Analyse de régression simple

Depuis que j'ai résumé la classification générale de l'apprentissage automatique dans l'article précédent, je décrirai chaque implémentation concrète de cette époque.

Cliquez ici pour l'article précédent https://qiita.com/U__ki/items/4ae54da6cadec8a84d1b

Mise en œuvre d'une analyse de régression simple

Le thème cette fois est "Quelle est la taille du téléviseur qui correspond à la taille de la pièce?" Peut-être que certaines personnes ont décidé de quitter le printemps. Pour ceux qui se demandent comment déterminer la taille du téléviseur qui correspond à la taille de la nouvelle pièce, j'aimerais trouver la taille du téléviseur qui correspond à la taille de la pièce en utilisant une simple analyse de régression.

J'ai décidé de créer des données simulées à l'aide de pandas, puis de les analyser en fonction de ces données.

Créer un fichier csv avec pandas

Tout d'abord, en vous référant à cet article (* https://www.olive-hitomawashi.com/lifestyle/2019/10/post-294.html*), les données de taille de téléviseur recommandées qui correspondent à la taille de la pièce sont les suivantes. fait. (Si vous avez ceci, vous n'avez pas besoin de cet article)

[Taille du téléviseur] 6ème puissance: 24 pouces 8 tatamis: 32 pouces 10 tatamis: 40 pouces 12 tatamis: 50 pouces

Sortez ces données sous forme de fichier csv à l'aide de pandas.

create_csv.py


#pandas de création csv
import pandas as pd
df=pd.DataFrame([
    ["6", "24"],
    ["8", "32"],
    ["10", "40"],
    ["12", "50"]],
    columns=["room_size", "tv_inch"]
)
df.to_csv("room_tv.csv", index=False)

df est une abréviation pour data flame. De plus, en définissant index = False, le numéro d'index dans csv est éliminé. Cela créera un nouveau fichier appelé room_tv.csv dans le même dossier.

Si les fichiers suivants sont créés dans le dossier, l'opération réussit.

room_tv.csv


room_size,tv_inch
6,24
8,32
10,40
12,50

Vous avez maintenant le fichier csv à utiliser cette fois.

Analyse de régression simple

Ensuite, nous effectuerons cette fois la principale analyse de régression simple.

L'analyse de régression simple comprend les trois éléments suivants. ** ・ Modèle de décision ** ** - Réglez la fonction d'évaluation ** ** - Minimiser la fonction d'évaluation (déterminer la pente) **

Détermination du modèle

Commencez par charger csv.

main.py


df=pd.read_csv("room_tv.csv")

Si vous utilisez un notebook jupyter, les données que vous avez créées précédemment seront affichées comme indiqué ci-dessous. スクリーンショット 2020-11-04 13.47.21.png

Ensuite, regardons les données cette fois. Matplotlib est facile à comprendre pour illustrer avec python.

main.py


x=df["room_size"]
y=df["tv_inch"]

import matplotlib.pyplot as plt
plt.scatter(x,y)
plt.show()

Ici, x est la taille de la pièce et y est la taille du téléviseur.

スクリーンショット 2020-11-04 13.50.08.png

J'ai des données qui semblent faciles à gérer. Cette fois, il semble qu'une fonction linéaire puisse le gérer (** détermination du modèle **).

Actuellement, vous pouvez utiliser ces données telles quelles, mais si vous utilisez ces données y=ax+b Ensuite, deux variables, a et b, apparaissent. Le calcul peut être fait tel quel, mais la ** moyenne des données ** est effectuée pour réduire une variable.

** Moyenne des données ** Prenez la valeur moyenne de toutes les données et utilisez la valeur soustraite de chaque donnée. Avec les pandas, il est extrêmement facile de prendre la moyenne des données ou de soustraire toutes les données. En faisant cela, seul y = ax peut être considéré.

main.py


#Obtenez la valeur moyenne des données
xm=x.mean()
ym=y.mean()

#Centralisé en soustrayant la valeur moyenne de toutes les données
xc=x-xm
yc=y-ym

#Réafficher
plt.scatter(xc,yc)
plt.show()

Avec le code ci-dessus, il est devenu la figure suivante. スクリーンショット 2020-11-04 16.15.33.png

Il semble qu'il n'y ait pas beaucoup de changement par rapport au graphique précédent, mais comme il n'est pas nécessaire de considérer la section (b), les calculs futurs seront beaucoup plus faciles.

\hat{y}=ax

Vous avez juste besoin de trouver un.

Détermination de la fonction d'évaluation

Je veux déterminer la formule afin que la valeur prédite (en utilisant l'apprentissage automatique) soit la plus petite par rapport à la valeur mesurée. La chose pour cela s'appelle la détermination de la fonction d'évaluation. Il a la même signification que «fonction de perte» en science des données. Bien que l'explication soit amoindrie ici, l'erreur quadratique est confirmée et la plus petite est déterminée. Utilisation de y comme valeur mesurée et y ^ (Waihat) comme valeur prédite

\begin{align}
L&=(y_1-\hat{y_1})^2+(y_2-\hat{y_2})^2+....+(y_N-\hat{y_1N})^2\\
 &=\sum_{n=1}^{N}(y_n-\hat{y_n})^2
\end{align}

Peut être représenté par. À ce stade, * L * est appelé une fonction d'évaluation.

Minimiser la fonction d'évaluation

La fonction d'évaluation apparaît comme une fonction quadratique comme nous l'avons vu précédemment. Par conséquent, le point où l'inclinaison est 0 est le minimum et le point où l'erreur quadratique est petite est obtenu.

Si vous voulez trouver le point où la pente de l'équation quadratique est 0, qui est dans la gamme des mathématiques du secondaire, vous pouvez différencier et trouver le point où "= 0".

Parce que la variable est un

\frac{\partial}{\partial a}(L)=0

Demander. En remplaçant la formule ci-dessus et en l'élargissant

\begin{align}
L&=\sum_{n=1}^{N}y_n^2-2(\sum_{n=1}^{N}x_ny_n)a+(\sum_{n=1}^{N}x_n^2)a^2\\
&=c_o-2c_1a+c_2a^2
\end{align}

Remplacer

\frac{\partial}{\partial a}(c_o-2c_1a+c_2a^2)=0\\
\\
a=\frac{\sum_{n=1}^{N}x_ny_n}{\sum_{n=1}^{N}x_n^2} 


Écrivons du code à ce sujet.

main.py



#Trouvez la valeur de chaque carré à partir de la formule
xx=xc*xc
xy=xc*yc

#Demandez un
a=xy.sum()/xx.sum()

#Essayez de tracer
plt.scatter(xc,yc, label="y")
plt.plot(x,a*x, label="y_hat", color="green")
plt.legend()
plt.show()

Le graphique est présenté ci-dessous. スクリーンショット 2020-11-04 17.08.40.png

Puisque x est déterminé dans la plage de la valeur mesurée, le segment de ligne est court, mais a a été obtenu.

D'après ce qui précède, l'inclinaison a a été obtenue. Cependant, comme il est centralisé, lors de son application

N'oubliez pas de multiplier x (valeur x) -x (valeur moyenne) par a et enfin y (valeur moyenne).

Enfin, j'en rédigerai un résumé.

main.py



import pandas as pd
import matplotlib.pyplot as plt

df=pd.read_csv("room_tv.csv")
x=df["room_size"]
y=df["tv_inch"]

#Moyenne
xm=x.mean()
ym=y.mean()

#Centralisation
xc=x-xm
yc=y-ym

xx=xc*xc
xy=xc*yc

a=xy.sum()/xx.sum()

plt.scatter(xc,yc, label="y")
plt.plot(x,a*x, label="y_hat", color="green")
plt.legend()
plt.show()


prime

main.py



#Aperçu des données
df.describe()

Cela analysera les données comme suit. Utile pour traiter des quantités de données plus complexes et plus importantes. スクリーンショット 2020-11-04 16.09.41.png

finalement

Le code était court mais très significatif. La prochaine fois, j'aimerais faire une analyse de régression multiple. En tant que développements futurs, je publierai non seulement des éléments liés à la programmation tels que le codage et la gestion des erreurs, mais également ceux liés aux neurosciences.

Recommended Posts

Apprentissage automatique avec python (2) Analyse de régression simple
Algorithme d'apprentissage automatique (analyse de régression unique)
Python Scikit-learn Analyse de régression linéaire Analyse de régression simple non linéaire Apprentissage automatique
Apprentissage automatique avec Python! Préparation
Analyse de régression simple avec Python
Commencer avec l'apprentissage automatique Python
Calculer le coefficient de régression d'une analyse de régression simple avec python
Première analyse de régression simple en Python
Apprentissage automatique par python (1) Classification générale
Algorithme d'apprentissage automatique (analyse de régression multiple)
Analyse de régression logistique Self-made avec python
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer Chapitre 7 Analyse de régression
Amplifiez les images pour l'apprentissage automatique avec Python
[Shakyo] Rencontre avec Python pour l'apprentissage automatique
[Python] Première analyse de données / apprentissage automatique (Kaggle)
Analyse de données à partir de python (pré-traitement des données-apprentissage automatique)
Construction d'environnement AI / Machine Learning avec Python
[Apprentissage automatique] Analyse de régression à l'aide de scicit learn
"Processus Gauss et apprentissage automatique" Régression de processus Gauss implémentée uniquement avec Python numpy
Analyse de données avec python 2
Apprendre Python avec ChemTHEATER 03
"Orienté objet" appris avec python
Apprendre Python avec ChemTHEATER 05-1
Régression logistique d'apprentissage automatique
Analyse vocale par python
Apprendre Python avec ChemTHEATER 02
Régression linéaire d'apprentissage automatique
Apprendre Python avec ChemTHEATER 01
Python: apprentissage supervisé (retour)
Analyse vocale par python
Effectuer une analyse de régression avec NumPy
Analyse de données avec Python
Analyse de régression avec Python
[Python] Introduction facile à l'apprentissage automatique avec python (SVM)
Apprentissage automatique à partir de Python Personal Memorandum Part2
Apprentissage automatique à partir de Python Personal Memorandum Part1
EV3 x Python Machine Learning Partie 2 Régression linéaire
[Python] Analyse de données, pratique du machine learning (Kaggle) -Prétraitement des données-
[Python] Collectez des images avec Icrawler pour l'apprentissage automatique [1000 feuilles]
J'ai commencé l'apprentissage automatique avec le prétraitement des données Python
Analyse de régression LASSO facile avec Python (pas de théorie)
Créer un environnement d'apprentissage automatique Python avec des conteneurs
L'apprentissage automatique appris avec Pokemon
2. Analyse multivariée définie dans Python 1-1. Analyse de régression simple (scikit-learn)
[Python] Analyse morphologique avec MeCab
[Analyse de co-occurrence] Analyse de co-occurrence facile avec Python! [Python]
Exécutez un pipeline de machine learning avec Cloud Dataflow (Python)
Analyse de régression multiple avec Keras
Analyse des émotions par Python (word2vec)
Apprentissage amélioré à partir de Python
Comprendre l'apprentissage automatique ~ régression de crête ~.
Notes d'apprentissage sur l'analyse des données Python
Analyse de squelette planaire avec Python
Créer un environnement de développement d'applications d'apprentissage automatique avec Python
Analyse morphologique japonaise avec Python
Démineur d'apprentissage automatique avec PyTorch
Programmation Python Machine Learning> Mots-clés
Coursera Machine Learning Challenge en Python: ex1 (régression linéaire)
Algorithme d'apprentissage automatique (perceptron simple)