Python:matplotlib

可視化の基本 matplotlibです。

貼っておきます。

matplotlib_taxt_for_data_science.html

matplotlib_taxt_for_data_science.ipynb

スクリプト

 

Python : pandas

どーも Keita_Nakamori(´・ω・`)です。pandas の基本操作を一通りやりましたので、置いておきます。

pandas_for_text_of _data_science.html

pandas_for_text_of _data_science.ipynb

べた貼りです。上記のhtmlのほうが見やすいです。

 

Python : numpy

どーもこんにちは、Keita_Nakamoriです(´・ω・`)

Pythonを色々やってきた中で、何かしらマイルストーン的なものがほしいと思い

Python 3 エンジニア認定データ分析試験

なるものを受けてみようと思っております。

データ分析というからには、numpy , pandas, matplotlib, scikit-learn くらいは出るんだろうなあと漠然と考えていますが、今日はnumpyを学習したので、備忘録に貼っておきます。

numpy_text_for_data_analisys_with_Python.html

numpy_text_for_data_analisys_with_Python.zip

機械学習:sklearnで30日間の株価予測をやってみる

前回、pandas_datareaderで株価を取得してpandasで統計処理してmatplotlibで可視化するということをやりました。

今回は機械学習をやっていきましょう。

理屈:

ある1日の株価データのうち、High Low Open Close Volume AdjClose の6データと、さらにOpen Close から算出されるエンジニアリングデータ change を含めて、計7つのデータを入力データとします。(ここまでは前回の話)

その正解データとして、30日後の終値Closeを定義します。

数学モデルは線形回帰モデルを使います。複数の入力データがあるので重回帰分析と呼ばれています。

  • y : 正解データ
  • x1~x7:入力データ
  • a1~a7:回帰パラメータ 偏回帰係数とも呼ばれます
  • error:入力データと正解データの差(誤差) 数学モデル上では切片に相当します

y = (a1*x1) + (a2*x2) + (a3*x3) + (a4*x4) + (a5*x5) + (a6*x6) + (a7*x7) + ierror

たくさんの入力データ(1日1データ)をこのモデルに入力して、正解データと入力データの Σ(ai*xi) の部分との差 errorがトータルでできるだけ小さくなるように、最小二乗法を使って ai を決めていきます。

その結果、予測モデルが確定しますので、30日前から現在までの入力データを代入すれば、それぞれの日に対して30日後の終値が予測されます。

 

# 終値を30日間前にずらしたcolumnを作成します。

ずらされた部分はNaNという値なしの状態で埋められます。

# 入力データを作成します

# 正解データを定義します

# データを訓練用と検証用に分割して、学習モデルを選択して、学習させて、検証します

精度:92% って出ています。(´・ω・`)

# 過去30日間の入力データ predict_data から、それぞれ30日後の未来終値データ predicted_dataを予測します。

# 可視化:予測結果

後ろの黄色いやつが未来の30日間の株価予想です。

Linear Regression でも まあまあそれっぽい答えは帰ってきますね。

機械学習:pandas_datareaderで株価を取得してpandasで統計処理してmatplotlibで可視化する

pandas_datareaderで株価を取得してpandasで統計処理してmatplotlibで可視化してみます。

次回は、sklearnで株価を予測してみますので、当該記事でpandas_datareaderの使い方を覚えてしまいましょう。

# 使用するモジュール群をインポート

# データウェアハウスからAPIを利用してデータを引っ張ってくる

#終値のチャートを可視化

# 統計処理:単純移動平均

#統計処理:変動率

 

 

では、次回はこれをsklearnで機械学習して未来を予測してみます。

Python:csv,DataFrame,Matplotlibの操作例

データ処理のコード例です。

有限要素法解析のポストプロセッサJ-visionから吐き出される応力データを評価使用とすると、自分でデータをこねくり回す必要があります。エクセルではやってられないのでpythonで自動化しました。

私の使い方は、csvからデータフレームとして取り込む>不要なデータを削除してデータフレームを整形する。>欲しいデータになるように演算する>結果を可視化する。という流れが多いです。

一度作ったら、クラス化しておけば後々改造するのが楽ちんになりますので、積極的にやっています。

やっていきましょう。モジュール群をインポートします。

クラスとメソドです。
csvファイルを読み込んでDataFrameを作成。整理します。

クラスのインスタンスを作成して、メソドを実行します。

結果整理1

結果整理2

以上、参考まで。

Python:マルチスレッド threading モジュール

どーもこんにちはKeita_Nakamori(´・ω・`)です。

最近はIoT関係で遊んでいるのですが、1つのラズパイで、複数のセンサーを扱うにはどうすればいいか考えていました。

普通のシングルスレッドで実行すると、PLCでいうところのスキャンタイムに依存することになります。

あるセンサーは高速でパルスをカウントしなければならない一方で、別のセンサーは、1秒周期でいいよとか、サンプリングタイムが全然違う場合はどうすればいいのか。

解決策として、マルチスレッドというものがあります。

それぞれのセンサーでサンプリングする関数を作って、それぞれを別々のスレッドとしてオブジェクト化して、メインスレッド内で実行するというやり方です。そうすると、それぞれのスレッドが互いに干渉することなく、あたかも2つのプログラムが同時に動いているような挙動を示します。

今回は、IOTというより、Pythonの基本なので、カテゴリーはPythonにしました。

では、やってみましょう。

まずは普通の関数を実行

まず最初に time_count()という関数を作って実行してみましょう。

1秒ごとに現在時間を出力しているだけのスクリプトです。

Pythonではthreadingモジュールから利用することができます。

結果:どうでしょう、これは普通ですよね。

次は、これをスレッド化して実行してみましょう。