Python : pandas

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

pandas_for_text_of _data_science.html

pandas_for_text_of _data_science.ipynb

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

 

MR:mirage solo のパススルー機能を使ってみた

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

捨てようかどうか迷っているMirage Soloについて、最後にMRをやってみようと思います。

環境

  • Windows10 home
  • Unity 2018.4.4f1
  • GoogleVRForUnity_1.200.0

ヒエラルキー

  • GvrBetaHeadset:新しいです
  • GvrControllerMain
  • GvrEventSystem
  • GvrEditorEmulator
  • GvrBetaControllerPointer:これも新しいです
  • PlayerというEmptyを作って、その中にMain CameraとGvrBetaControllerPointerwを入れておきます。

GvrBetaHeadsetの設定

起動と同時にMRが発動するように、インスペクターでGvrBetaHeadsetスクリプトのグルーバル変数であるInitial Camera Mode を Tone Mapに、Initial Scene TypeをAugmentedに変更します。

カメラの設定とオブジェクト配置

カメラの背景はHolo Lenseと同じく完全透明のSolid color (0,0,0,0)への変更が必要です。

カメラの座標はカメラの親であるPlayerでy=1.5にします。カメラ自体は(0,0,0)です

オブジェクトは1m角の枠とユニティちゃんを配しました。

ではビルドしましょう。やりかたはVRのときと全く同じです。

MRとVR(オブジェクトだけ)を切り替えたいとき

下記サイトを参考に、スクリプトをPlayerに貼り付けます。これで、Appボタンを押せば切り替えられるようになりました。

【Unity(C#)】MirageSoloのシースルーモード導入方法

スクリーンショットを貼っておきます(Volume Down ボタン+ DayDreamボタン(一番下))

スクリプト

念の為、置いておきます。

ViewModeChange.cs

弱点

オブジェクトの前になにも障害物がない状態では問題ないのですが、例えば、手をユニティちゃんの手前にかざすと、隠れるはずのユニティちゃんが隠れてくれません。

ここがホロレンズと違うところで、手はオブジェクトとして認識されているわけではありません。

よって、手はパススルーの背景と同じ扱いをされてしまいますので、手で遮っても、その上にユニティちゃん(オブジェクト)が乗ってくることになります。

このときに盛大な違和感を憶えます。

でも、手をオブジェクトの後ろに回すぶんにはなんの違和感もありませんし、むしろ自然な感じが良いです。

今後

  • パススルー画像をリアルタイムで解析して、
  • 手の動きをオブジェクト化し、
  • ユニティちゃんの手前にかざし、ユニティちゃんが見えなくなるような方法を探る。

そんなことができるでしょうか。

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

以上、参考まで。

VR:Unity空間内をDayDreamコントローラーで歩く5(できました!)

今日は、キーボードからではなくて、デイドリームコントローラーからの入力を受け取るように改造していきます(´・ω・)

かなり前にSummonFunc()を作ったときにやったのを思い出しながらやってみます。

条件式:if (GvrControllerInput.ClickButtonDown) でコントローラーのボタンがクリックされたことを認識したときに、関数SummonFunc()を実行しています。

関数SummonFunc()は任意のオブジェクトを任意の座標と向きを定義してヒエラルキーに追加(Instantiate)する内容になっています。

変更しましょう:

Gvrのメソドを利用していきましょう。

GvrControllerInput.以下のメソド

  1. AppButtonDown     : アプリケーションボタンを押したとき
  2. HomeButtonDown : ホームボタンを押したとき
  3. ClickButtonDown   : タッチパッドボタンを押したとき
  4. TouchDown               : タッチパッドに触れたとき
  5. TouchPos                    : タッチパッドに触れている位置(Vector2)

if(GvrControllerInput.TouchDown)

  • tpX=0.5,tpY=0.5が中心で
  • 前進はtpY<0.3のときにしよう
  • 後退はtpY>0.7のときにしよう
  • 右を向くのはtpX>0.7のときにしよう
  • 左を向くのはtpX<0.3のときにしよう

もっといい方法があるかもしれないが、まずはこれでやってみよう。

スクリプト:PlayerMover2.cs

デイドリームコントローラーで動きました(´・ω・)

まだまだ、改良は必要ですが、とりあえず動くものはできました。

かれこれ、2日まるまるかかってしまいましたが、大きな前進です!

起動直後になぜか、カメラが動いてしまいます。

後日調整が必要です。

VR:Unity空間内をDayDreamコントローラーで歩く4(まずはキーボードから)

前回は結局 ロコモーションもスクリプトがおかしいですよーと警告が出てどうにもなりませんでした。しかも、ロコモーションアセットを全部消しても、ビルドができなくなるというわけわからん状態になったので、プロジェクトを捨てました。恐ろしいです。ここいらでちゃんとUnity勉強したほうがいいかもしれませんね。

基本に立ち返って、自分でカメラ操作のスクリプトを実装していこうと決意した次第であります。

今回の成果:大きな前進(*´﹃`*)

キーボードのWASDまたは矢印キーでプレイヤー視点を移動することに成功しました。

スクリプト:PlayerMover.cs

動いた、嬉しい。

VR:Unity空間内をDayDreamコントローラーで歩く3(Unity 2019.3.0a5はアカン)

原因が分かりました。

Unity 2019.3.0a5に対して、Unity v1.200.0用GVR SDKの組み合わせは上手くいかないようです。

代わりにUnity 2019.1.5f1を使用することで、Unity v1.200.0用GVR SDKをインポートしても問題なくビルドできます。

プレイヤーセッティングでAPIレベルを変更できない問題も特に発生しません。

いつも通りに戻りました。本当によかった。

改めまして 環境

  • OS                          : Windows 10 Home
  • Unity                    : Unity Hub  > Unity 2019.1.5f1
  • google VR SDK : Unity v1.200.0用GVR SDK
  • ヘッドセット : Mirage Solo

 

UnityでのDaydream(3DoF)コントローラのサポート

説明ページに従ってやっていきます。

Gvrプレハブをヒエラルキーに配置します。

Google VRプレハブのあるシーン

PlayerとMain Camera と GvrControllerPointerの座標設定

Playerの座標は目の高さy=1.4 原点付近に置いたオブジェクトが見える位置z=-3.0にします。

Main Cameraの座標はPayerの座標に一致させたいので、x,y,z =0,0,0 にします。

GvrControllerPointerの座標は左右の目の中心位置よりもy方向に-0.30 , z方向に-0.20とします。腕をくの字90°に曲げた状態を想定しています。

聞き手は右手に設定します。(Gvr Tracked Controller(script) でController Hand=right にする)

次にGvrControllerPinter直下のControllerVisualを設定していきます。

 

 

  いよいよ、念願の歩く設定に入ります。

ロコモーション

テレポーテーション:瞬間移動

トンネリング;1人称視点移動(中心のみ普通の映像で、周囲は暗くなるのでトンネリングというらしい。)

チェイスカメラ:3人称視点

では GitHubからダウンロード

DaydreamElements.unitypackage をダウンロードしてプロジェクトにインポートしましょう。

なんかでた・・・。

 

===再起動したら復活した。===

気を取り直して、やっていきましょう。

====でも 上手くいきません。眠いので以降は明日やります===

 

手動でトンネリングを設定したい場合は、次の手順を実行します。

TunnelingVignetteメインカメラの兄弟としてプレハブのインスタンスを追加します。
スクリプトのインスタンスをFirstPersonTunnelingLocomotionメインカメラの親に追加します。
ではFirstPersonTunnelingLocomotion、スクリプトを参照ドラッグ TunnelingVignetteビネットコントローラのプロパティにします。
プレイヤーを衝突でブロックしたい場合は、メインカメラの親にキャラクターコントローラーを追加します。

Add an instance of the TunnelingVignette prefab as a sibling of the Main Camera.
Add an instance of the script FirstPersonTunnelingLocomotion to the parent of the Main Camera.
In the FirstPersonTunnelingLocomotion script, drag a reference to TunnelingVignette into the Vignette Controller property.
Optionally, add a Character Controller to the parent of the Main Camera if you want the player to be blocked by collisions.

うーん(*´﹃`*) FirstPersonTunnelingLocomotionがコンパイルされていないとこどーとか出て、アタッチできませんぬー。

VR:Unity空間内をDayDreamコントローラーで歩く2(全然無理)

Unity空間内をDayDreamコントローラーで歩くどころではなくなりました。

このUnityバージョンの重大な不具合を見つけました。

環境

  • OS                          : Windows 10 Home
  • Unity                    : Unity Hub  > Unity 2019.3.0a5
  • google VR SDK : Unity v1.200.0用GVR SDK
  • ヘッドセット : Mirage Solo

ビルドできません!!

ビルドしようにも、プレイヤーセッティングが白紙になってしまい何も設定できなくなります。

その場合の解消法としては、一旦プラットフォームをアンドロイドからPCに変更してから、再びアンドロイドに戻すと復活しました。ちなみにRun DeviceはDefault deviceのままでOKです。わざわざLenovo VRにする必要はありませんでした。

引き続き、やっていますが、再ビルドできなくなりました。

プロジェクトを新規に立ち上げてセットアップしましたが、恐ろしい不具合が・・・

APIレベルの変更ができないのです。というか、項目がないのです。

ここでビルドすると、失敗しますが、プレイヤーズセッティングの項目が増えてAPIレベルの変更ができるようになります。

でもビルドは成功しません。意味不明の状態であります。さあ、次はどうしましょうかね。

======ビルド成功した手順=====

  1. 新規プロジェクトを作る
  2. ヒエラルキーにプレーンを作る
  3. シーンをセーブ
  4. プロジェクトをセーブ
  5. ビルドセッティングでまずアンドロイドへプラットホームを変更
  6. プレイヤーセッティングスでカンパニーネームをTiに
  7. XRセッティングスで バーチャルリアリティサポートテッドにチェック
  8. バーチャルリアリティSDKにDayDreamを追加
  9. アザーセッティングスのグラフィックスAPIからVulkanを削除(VRに対応していない旨の傾向が出る)
  10. アザーセッティングスのIdentificationのMinimum API Levelを24にしたいが、この時点ではgetting APIなんちゃらと、薄い字になっていて変更できない。
  11. びるどえんどらーん する。当然失敗するが、Minimum API Levelを19から24へ変更するよう警告がでる。
  12. これによって、Minimum API Levelを24に変更できるようになるので、やる。
  13. 再び、びるどえんどらーん。
  14. Mirage Soloをかぶると自動的にUnity画面が立上り、ゲームが開始される。
  15. 以後、このゲーム画面のまま、再度びるどえんどらーんをすると、自動的に強制停止されて、新しく更新されたゲーム画面に自動的に遷移する。

====== しかーし!!=====

世の中そんなに甘くはありません。

本題であります google VR アセットをインポートして、ビルドした瞬間。またでました。ディナーイのエラー もう google VRは使いたくないので、 Mirage Solo 捨てて、Oculus Quest に乗り換えます。

さようなら、Google