Quand je regarde le site d'introduction sur l'apprentissage automatique, j'ai l'impression qu'il est difficile pour les personnes sans connaissances de s'entendre avec lui car cela dit quelque chose de difficile. Eh bien, c'est certainement un thème difficile, mais ... J'aimerais écrire un article dans le but de "même si vous n'avez aucune connaissance des mathématiques ou de l'apprentissage automatique, toute personne ayant des connaissances en python peut l'implémenter". Dans cet article, je n'expliquerai pas les choses difficiles, mais je continuerai avec la position de toucher à l'apprentissage automatique pour le moment.
・ Comprendre python dans une certaine mesure ・ Je suis intéressé par l'apprentissage automatique, mais je ne sais rien ・ J'ai appris le plan dans une classe universitaire, mais je ne sais pas comment le mettre en œuvre.
python 3.8.5 scikit-learn 0.231
Il semble qu'il ne puisse être installé que si la version de python est 3.8.5 ou inférieure.
pip install scikit-learn
Comme numpy est utilisé pour lire le fichier csv, veuillez l'installer si vous ne l'avez pas déjà installé.
pip install numpy
scikit-learn (anciennement scikits.learn) est la bibliothèque d'apprentissage automatique open source de Python [2]. Prise en charge de Vector Machine, Random Forest, Gradient Boosting, k Neighbour Method, DBSCAN et de nombreux autres algorithmes de classification, de régression et de clustering conçus pour interagir avec NumPy et SciPy dans les bibliothèques mathématiques de Python. ing. (De wikipedia)
Oui, je ne pense pas qu'il soit logique de regarder cela, alors rappelons-nous simplement "** Bibliothèque qui prend en charge l'apprentissage automatique **" cette fois.
La machine à vecteurs de support (SVM) est l'un des modèles de reconnaissance de formes qui utilise l'apprentissage supervisé. Applicable à la classification et à la régression. La machine à vecteurs de support est l'un des modèles d'apprentissage avec d'excellentes performances de reconnaissance parmi les méthodes actuellement connues. La raison pour laquelle la machine à vecteurs de support peut présenter d'excellentes performances de reconnaissance est qu'il existe un dispositif permettant d'obtenir des performances de discrimination élevées pour des données non formées. (De wikipedia)
En termes simples, il s'agit d'une méthode d'apprentissage automatique *** qui classe les données en dessinant une ligne ** comme indiqué dans l'image ci-dessous. Il existe différentes méthodes d'apprentissage automatique. SVM (Support Vector Machine) est l'un d'entre eux.
https://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Kernel_Machine.svg/2880px-Kernel_Machine.svg.png (De wikipedia)
C'est la cible que vous souhaitez prédire avec l'apprentissage automatique. Par exemple, lorsque vous souhaitez prédire le temps, les variables objectives sont ensoleillé, nuageux et pluvieux.
Ce sont les informations nécessaires pour faire une prédiction. Par exemple, la quantité de précipitations et d'humidité requise lorsque vous souhaitez prédire la météo.
Fondamentalement, plus le nombre de données est grand, plus la précision est élevée, mais comme il s'agit d'un essai, nous préparerons une petite quantité de données. Ces données concernent la météo de cette année. Eh bien, il y a beaucoup de données météorologiques sur le site Web de l'Agence météorologique, alors jetez un œil si vous êtes intéressé. À partir de la gauche ** Température **, ** Précipitations **, ** Temps d'ensoleillement **, ** Humidité **, ** Météo (0: ensoleillé, 1: nuageux, 2: pluie) ** Représente. Dans ces données, ** température **, ** précipitations **, ** temps d'ensoleillement **, ** humidité ** sont des variables explicatives, ** temps (0: ensoleillé, 1: nuageux, 2: nuageux) Rain) ** est la variable objective.
PostScript 16/11/2020 J'ai remarqué en regardant les données, mais comme je viens de prendre les données de janvier, elles ne supportent que les données de cet hiver (rires).
data.csv
6.6,0,8.2,47,0
7.1,0,5.7,57,1
7.1,0,9.3,62,0
8.1,0,4.7,53,1
6.5,0,9.7,54,0
8,0,8.1,42,1
6.6,1.5,0.5,68,2
5.7,21.5,2.7,94,2
11.2,0,9.3,47,0
9,0,7.9,57,1
8,0,4.5,66,1
7.7,0,1.8,66,2
9.1,0,9.3,70,0
9.1,0,8.3,70,0
7.8,11.5,3.6,79,2
7.6,0,4.4,46,1
7.6,0,3.6,58,1
3.8,13.5,0,87,2
7.3,0,8,62,1
8.3,0,9.7,60,0
En modifiant la météo à votre valeur préférée, vous pouvez prédire la météo dans ces conditions. (Cependant, la précision est médiocre car le nombre de données est petit.) Même par temps, de gauche à droite ** Température **, ** Précipitations **, ** Temps d'ensoleillement **, ** Humidité ** Puisqu'ils sont alignés, essayez de saisir les conditions dans cet ordre.
weather_learn.py
import numpy as np
from sklearn import svm
#Lire le fichier csv
npArray = np.loadtxt("data.csv", delimiter = ",", dtype = "float")
#Stockage des variables explicatives
x = npArray[:, 0:4]
#Stockage de la variable objective
y = npArray[:, 4:5].ravel()
#Sélectionnez SVM comme méthode d'apprentissage
model = svm.SVC()
#Apprentissage
model.fit(x,y)
#Données d'évaluation(Entrez votre valeur préférée ici)
weather = [[9,0,7.9,6.5]]
#Prédire la météo des données d'évaluation avec la fonction prédire
ans = model.predict(weather)
if ans == 0:
print("Il fait beau")
if ans == 1:
print("Le ciel est nuageux")
if ans == 2:
print("C'est la pluie")
$ python3 weather_learn.py
Il fait beau
Merci pour votre travail acharné cette fois également. Je suis heureux que ce que j'ai fait produise des résultats de cette manière. Lorsque je suis entré en contact avec l'apprentissage automatique pour la première fois, j'étais souvent coincé avec trop d'informations. Dans cet article, j'ai l'intention de l'écrire d'une manière facile à comprendre pour ceux qui "n'ont aucune connaissance mais veulent toucher à l'apprentissage automatique", mais si vous avez des questions ou des erreurs, veuillez commenter. À la prochaine.
Recommended Posts