前提
大学生で、これまでほとんど触れたことが無かったのですが、課題で機械学習を用いた研究を行っている者です。
内容としては、車に加速度センサを設置してカーブや直進を走行した際に取得できる加速度データ(x軸、y軸、z軸)とRandomForestClassifierを使用して、学習したデータからテストデータがカーブか直進かを評価しようとしています。
データセットはcsvファイル形式で、一つのファイルにx軸加速度、y軸加速度、z軸加速度、合成加速度の4列と行数はファイル毎に違います。取得した時間がバラバラなためこうなりました。基本的に130~240の間です。
この画像は、データセットの一部になります。
こちらの画像は、取得した加速度データをグラフ化した物です。
実現したいこと
-
時系列データである加速度データをRandomForestClassifierでの教師あり学習で学習(学習時、特に大きな変化が継続的に無い直進の加速度データであれば0,カーブのように部分的に山のような形状ができる加速度データであれば1,という風にルール付けて学習させたい)
-
テストデータとして取得した加速度データで評価を行い、1から0の間の数値で出力し、そのテストデータが直進なのかカーブなのかを判定したい
-
最終的には、評価の精度を再現率や適合率、F値で出力できるようにしたい
発生している問題・エラーメッセージ
学習させる段階から、自分のデータセットをルール付けて学習させるコードが調べても分からず、ほとんどがアヤメの分類やワインの分類といった、元から用意されているデータセットがあり、部分的に自分のデータセットを入れようとコードを変えても実行できなくなってしまっています。
TypeError Traceback (most recent call last) <ipython-input-2-7f7ea800a020> in <module> 20 21 ---> 22 iris_list = df() 23 24 x_train, x_test, t_train, t_test = train_test_split( TypeError: 'DataFrame' object is not callable
該当のソースコード
import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score df= pd.read_csv('k1xyz.csv') index_col='None', parse_dates=True df.head() #確認 df.plot() plt.title('curve.1') #グラフタイトル plt.ylabel('Acceleration') #タテ軸のラベル plt.xlabel('time') #ヨコ軸のラベル plt.show() iris_list = df() x_train, x_test, t_train, t_test = train_test_split( iris_list.data, iris_list.target, test_size=0.3, random_state=0) # print(len(x_train)) # print(len(x_test)) # 学習モデルを作成 model = RandomForestClassifier() # 学習モデルにテストデータを与えて学習させる model.fit(x_train, t_train) # テストデータを与えて各データの種類を推測 test = model.predict(x_test) # テストデータのラベルを与えて答え合わせ score = accuracy_score(t_test, test) print(f"正解率:{score * 100}%")
試したこと
なんとかRandomForestを用いて分類したいと思い、様々なサイトの中からアヤメの分類を行うというサイトを参考に自分のデータセットを入力できるようにコードを変更しました。
リンク内容
補足情報(FW/ツールのバージョンなど)
実行環境はGoogleColaboratoryです。
私自身、こういった場で質問するのは初めてで、おそらく閲覧していただいている皆様にとっては、的外れなことをしようとしていたり、全く情報が足りていなかったりもあるかと思います。
お目汚ししてしまい、本当に申し訳ありません。
もしもよろしければ、何かご回答いただけますと幸いです。

回答1件
あなたの回答
tips
プレビュー