機械学習のためのデータ収集を書いてきました。
jump1268.hatenablog.com
今までのプログラムは押している間に電圧をcsvファイルに書き出していました。
このプログラムだと20行文よみこんでcsvファイル作ったらプログラムが終わっていました。次のデータ取るときは、プログラムを起動してデータとって、,,,てなってすごくめんどくさいし、時間かかるな~。
これは改善しなければ!と思い改善しました。
これによって、ボタンを押している間にcsvファイルを作ってくれます。
一番外のwhile の条件n<20を変えることによって、今は20個分のcsvファイルを作るとプログラムは終了しますが、
自分が好きな分に調整できます。
また次のcsvファイルと次のcsvファイルを作る間に1秒ほど待つ時間も入ってるので、
使いやすくなってます。
python側のプログラムは
import pandas as pd import numpy as np import serial import datetime import csv import time dt_now = datetime.datetime.now() def main(): ser = serial.Serial("COM10") # COMポート(Arduino接続) #df = pd.DataFrame(columns=["A0","A1"]) n =20 while n <30: num = 0 df = pd.DataFrame(columns=["A0","A1"]) while num < 50:#5回分のセンサの値をまとめてから csvファイルをつくる data = ser.readline().rstrip() # \nまで読み込む(\nは削除 data = data.decode() #対話型だとこれが必要らしい (xdeg, ydeg, zdeg) =data.split(",") xdeg = float(xdeg) -512 ydeg = (float(ydeg)-512)/512 #正規化するため→(ー1~1) zdeg = (float(zdeg)-512)/512 new_data = pd.Series([ydeg, zdeg], index=df.columns) df = df.append(new_data, ignore_index=True) num = num + 1 xdeg = int(xdeg) minute = dt_now.minute hour = dt_now.hour second = dt_now.second # del df['label'] # CSVファイルの作成+ #df.to_csv("label"+str(xdeg)+"-"+str(minute)+"min"+str(n)+'.csv',index=False,header=False)#ファイル名、index,ヘーダを削除。 df.to_csv("label"+str(xdeg)+"-"+str(n)+'.csv',index=False,header=False)#ファイル名、index,ヘーダを削除。 #print(df) print(str(n)+"回目"+"label:"+str(xdeg)) n = n + 1 time.sleep(1) #csvファイルを作ってから〇秒間まってから次の信号を受け取りcsvファイルを作る。 if __name__ == '__main__': main()
↓無料体験すればアマゾンギフトが2000円もらえます。
(このサイトのプレゼント1000円+私のポケットギフト)←(笑)ギフト券使わないといけないので
登録したらコメントでもなんでも言ってください。