はじめに
センサーなどのデータを分析しようとした際に、データにノイズがのっているケースがあると思います。その時に実施するのがデータの平滑化(スムージング)です。例えば、スパイクノイズなどがデータに満たれた場合、データを平滑化することでデータの重要な挙動を把握することができます。平滑化の代表的な手法に移動平均法やSavitzkey-Golayフィルタがあります。
本記事ではnumpy、pandas、scipyを用いたデータの平滑化(移動平均法とSavitzkey-Golayフィルタ)について紹介します。
- はじめに
- 1. 今回使用するデータ
- 2. Numpyを用いた移動平均による平滑化
- 3. Pandasを用いた移動平均による平滑化
- 4. scipyを用いたSavitzkey-Golayフィルタによる平滑化
- オススメ書籍
- スキル修得&転職
- おわりに
1. 今回使用するデータ
今回は6軸慣性センサーの計測データを用います。以下にデータの保管先を示します。
今回はAx(X軸の加速度)の列を採用して、データの平滑化を行います。データを可視化すると以下のようになります。
2. Numpyを用いた移動平均による平滑化
Numpyを用いた移動平均による平滑化ではnumpy.convolveを用います。以下に例を示します。以下の例では25点の移動平均を用いてます。
3. Pandasを用いた移動平均による平滑化
Pandasを用いた移動平均による平滑化ではpandas.DataFrame.rollingを用います。以下に例を示します。以下の例では25点の移動平均を用いてます。引数には窓のサイズと中心点の計算の有無を指定します。centerでTrueにすることで前後12点を含む25点の平均値を中心の値として採用します。
4. scipyを用いたSavitzkey-Golayフィルタによる平滑化
scipyを用いたSavitzkey-Golayフィルタによる平滑化ではscipy.signal.savgol_filterを持ちます。引数にはデータの配列、窓(点数)、多項式の次数を指定します。移動平均よりもより元のデータの特徴を捉えて急激な変化の部分を平滑化しているのがわかると思います。
オススメ書籍
Pythonによるあたらしいデータ分析の教科書
Python3エンジニア認定データ分析試験の教科書にもなっている書籍で、データ分析に必要なPythonの基礎手法を身に付けることができます。具体的には、numpyとpandasを用いたデータの前処理、matplotlibを用いたデータのグラフ化、scikit-learnを用いた機械学習の基礎記述方法を身に付けることができます。これ一つで基礎はバッチリで、実務でも十分活用できると思います。個人的には見やすい書籍でした。
データサイエンス教本 Pythonで学ぶ統計分析・パターン認識・深層学習・信号処理・時系列データ分析
こちらの書籍は初心者から少し記述できるようになった人、かつ数学的な理論と一緒にPythonの記述方法を理解したい方にオススメです。統計分析、パターン認識、深層学習、信号処理、時系列データといった幅広く実務で使用する手法を学びたい方にもオススメです。
東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~
こちらの基礎を抑えながら実務で必要なPython記述法を学べる書籍です。基礎を一つ一つ抑えるというよりも実務で活用できるように必要な知識を身に付けられると感じました。これ一冊あれば十分かなと思いました。
スキル修得&転職
近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。
以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
おわりに
numpy、pandas、scipyを用いたデータの平滑化(移動平均法とSavitzkey-Golayフィルタ)について紹介しました。慣性センサーやロードセルなどのデータを扱う場合にこういったデータの平滑化処理をすることがあるかと思います。平滑化はデータの性質や見たい内容によってどの手法でどの窓にするのかを検討してから使用しましょう。