Je voudrais traiter certaines données dans le cadre d'une étude des réseaux de neurones. J'ai donc décidé de jouer avec les données Amedas, qui semblent être facilement disponibles. Il semble que les données peuvent être téléchargées à partir de l'URL suivante.
https://www.jma.go.jp/jma/menu/menureport.html
Météorologie → Télécharger les données météorologiques passées
Donc, il semble que vous puissiez obtenir les données appropriées au moment approprié. Il semble que la quantité de données pouvant être téléchargées en une seule fois soit limitée, définissez-la de manière appropriée et essayez de télécharger. Cette fois, j'ai utilisé les données de la ville de Matsumoto, préfecture de Nagano, que je fais souvent du jogging.
L'élément sélectionné est ... ■ Température ■ Direction / vitesse du vent ■ Météo Trois de. Après avoir sélectionné la période appropriée et cliqué sur le bouton "Télécharger le fichier CSV", le téléchargement a réussi.
Quand je l'ouvre, cela ressemble à un format étrange.
Il y a un en-tête, mais il est peut-être un peu cassé. Afin d'analyser avec Tensorflow, il est nécessaire d'importer des données dans Python, mais cette fois j'utiliserai Pandas. Ensuite, il semble qu'il existe des restrictions sur le fichier CSV. Probablement ...
Est-ce là? Je ne peux pas l'utiliser tel quel, et comme la direction du vent est japonaise, j'ai décidé de le convertir en une valeur numérique.
Je pense que l'utilisation de Script comme Perl est la voie royale pour ce genre de choses, mais comme l'environnement que j'utilise est Windows, j'écrirai facilement un programme avec VBS. Que diriez-vous de quelque chose comme ce qui suit? (Est-ce correct de publier ce genre de chose ?? ... Ceux qui l'utilisent sont à leurs risques et périls)
transCSV.vbs
if WScript.Arguments.Count = 0 then
WScript.echo("too few arguments.")
WScript.Quit(-1)
end if
Set objFso = CreateObject("Scripting.FileSystemObject")
FileName = WScript.Arguments(0)
if objFso.FileExists(FileName) = 0 then
WScript.echo("filename err")
WScript.Quit(-1)
end if
tmpFileName = split(FileName,".")
outFileName = tmpFileName(0) & "_out." & tmpFileName(1)
Set objReadFile = objFso.OpenTextFile(FileName , 1, False)
Set objWriteFile = objFso.OpenTextFile(outFileName , 2, True)
If Err.Number > 0 Then
WScript.Echo "Open Error"
Else
' write header
objWriteFile.WriteLine "year,month,day,hour,temp,wind,angle,weather,"
line_cnt = 0
Do Until objReadFile.AtEndOfStream
line_str = objReadFile.ReadLine
If line_cnt > 5 then
line_info = split(line_str,",")
yearValue = split(split(line_info(0)," ")(0),"/")(0)
monthValue = split(split(line_info(0)," ")(0),"/")(1)
dayValue = split(split(line_info(0)," ")(0),"/")(2)
hourValue = split(split(line_info(0)," ")(1),":")(0)
temp = line_info(1)
wind = line_info(4)
strAngle = line_info(6)
weather = line_info(9)
If Not(len(temp)=0 or len(wind)=0 or len(strAngle)=0 or len(weather)=0) then
If strcomp(strAngle,"Nord") = 0 then
angle = 0
ElseIf strcomp(strAngle,"Nord-nord-ouest") = 0 then
angle = 1
ElseIf strcomp(strAngle,"Nord-nord-ouest") = 0 then
angle = 2
ElseIf strcomp(strAngle,"Nord Ouest") = 0 then
angle = 3
ElseIf strcomp(strAngle,"Ouest-nord-ouest") = 0 then
angle = 4
ElseIf strcomp(strAngle,"Ouest") = 0 then
angle = 5
ElseIf strcomp(strAngle,"Ouest-sud-ouest") = 0 then
angle = 6
ElseIf strcomp(strAngle,"Sud-ouest") = 0 then
angle = 7
ElseIf strcomp(strAngle,"Sud-sud-ouest") = 0 then
angle = 8
ElseIf strcomp(strAngle,"Sud") = 0 then
angle = 9
ElseIf strcomp(strAngle,"Sud-sud-est") = 0 then
angle = 10
ElseIf strcomp(strAngle,"Sud-est") = 0 then
angle = 11
ElseIf strcomp(strAngle,"Est-sud-est") = 0 then
angle = 12
ElseIf strcomp(strAngle,"est") = 0 then
angle = 13
ElseIf strcomp(strAngle,"Est-nord-est") = 0 then
angle = 14
ElseIf strcomp(strAngle,"Nord-est") = 0 then
angle = 15
ElseIf strcomp(strAngle,"Nord-nord-est") = 0 then
angle = 16
End If
line_out_str = yearValue
line_out_str = line_out_str & "," & monthValue
line_out_str = line_out_str & "," & dayValue
line_out_str = line_out_str & "," & hourValue
line_out_str = line_out_str & "," & temp
line_out_str = line_out_str & "," & wind
line_out_str = line_out_str & "," & angle
line_out_str = line_out_str & "," & weather
objWriteFile.WriteLine line_out_str
End If
End If
line_cnt = line_cnt + 1
Loop
End If
objReadFile.Close
objWriteFile.Close
Set objReadFile = Nothing
Set objFso = Nothing
WScript.Echo FileName & " > " & outFileName & " transport end!"
Pour ce faire, depuis la ligne de commande:
cscript transCSV.vbs data.csv
Ensuite, data_out.csv a été créé dans le même dossier. (Affichage à mi-chemin)
data_out.csv
hour,temp,wind,angle,weather,
1,-3.0,1.8,0,2
2,-3.2,1.7,3,2
3,-4.1,1.1,0,2
4,-4.6,1.1,9,2
5,-4.6,1.0,12,2
6,-4.5,0.6,14,2
7,-5.1,1.0,0,2
8,-4.2,0.7,16,2
9,-2.7,0.5,13,2
Vous êtes maintenant prêt à importer avec Pandas. En référence à d'autres exemples, il semble qu'il puisse être importé avec le code Python suivant.
import pandas as pd
import numpy as np
import tensorflow as tf
# deta making???
csv_input = pd.read_csv(filepath_or_buffer="data_out.csv", encoding="ms932", sep=",")
#Nombre d'éléments d'entrée (nombre de lignes)*Le nombre de colonnes) sera renvoyé.
print(csv_input.size)
#Renvoie l'objet DataFrame extrait uniquement pour la colonne spécifiée.
x = np.array(csv_input[["hour","day","month"]])
y = np.array(csv_input[["wind"]])
Alors, comment jouez-vous à partir d'ici ??? Tout d'abord, je vais essayer l'analyse de régression en utilisant un réseau de neurones (prédire y à partir de x) ... mais c'est devenu un peu plus long, donc je vais le reporter à la prochaine fois. Je n'ai pas eu beaucoup de temps ces derniers temps, mais j'ai l'intention d'écrire plus quelque part ... Je ferai de mon mieux.
Recommended Posts