\Microsoftの使い方が間違っています

Microsoftの使い方が間違っていますというエラーでcondaが使用できなくなってしまった。

解決の仕方を調べた所、Path内にダブルクォーテーションが入っている際に問題となるというので、環境変数を確認したが何も問題が無い。

こちらのリンクを参考に、コマンドプロンプトのプロパティから、リンク先を変更することで解決。

私の場合は、以下のパスにコマンドプロンプトのショートカットがあった。

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Anaconda3 (64-bit)

AWS EC2 上のwINDOWSにファイルをアップする方法

AWS EC2上のWindowsにファイルをアップ

表題の件、WinSCPを使った方法等調べて試したものの上手くいかず、最終的に以下の方法でアップできたのでメモ。

1.リモートデスクトップ接続を起動し、パブリックDNSを選択。

2.ローカルリソースタブの「ローカルデバイスとリソース」の「詳細」をクリック。

3.ローカルのドライブとリソースを共有すれば、AWS EC2上のWindowsから直接ローカルのCドライブを見ることができる。

エラー:installation of package ‘rstan’ had non-zero exit status 

Rstanのインストールエラー

こちらの素晴らしい記事を見ながらRstanのインストールを進めていたところ、

「installation of package ‘rstan’ had non-zero exit status」

というエラーでこけてしまう。

よく見えるといくつかのエラーメッセージが表示されている。

dependency 'ps' is not available for package 'processx'

この記事によると、Rをアップデートして解決したというので、アップデート。

3.4→3.5.1へのアップデート。

他にもいくつか足りないライブラリがあり、そちらは順次インストール。

無事インストールできるかと思ったら、以下のエラーに遭遇。

「CXX14 is not defined」

こちらのリンクで解決。

無事Rstanのインストール完了。

CAPE-OPENでCOCOのThermoを読み込む

ダウンロード、インストール~ライセンス取得

こちらのリンクから、Wheelをダウンロードできる。

インストールする際は、pip install [Wheel名]。

インストール後は、import capeopen_thermoでモジュールの読み込みが可能。

Personal もしくはAcademic用途であれば、こちらから、フリーでライセンスを取得可能。

メールでライセンスコードが送られてくるので、capeopen_thermo.license(“ライセンスコード”)の形式でランさせると、以下のようにライセンスがアクティベートされる。

使用例

こちらのExamplesに、TXY線図の作成例が記載されている。

ただし、上記のExamplesはRefpropを呼び出しているので、試すにはNISTのHPから、Refpropの契約自体が必要。

さらに、REFPROP CAPE-OPEN Property Package Manager のライセンスフィーもかかるので、ChemSep Property Package Managerを試してみる。

Examplesの例そのまま試すことはできないので、こちらのHelpを参照する。

フリーライセンスでpackageが使えるものとして、TEA (CAPE-OPEN 1.1)は使えそうだったので、TEAを使用。

※TEA : COCO’s Thermodynamics for Engineering Applications

以下、水-Butanolを0.5mole fractionずつ入れた場合の大気圧、VF=0.5における各相の組成、密度、比熱を計算させる場合の計算例。

import capeopen_thermo

system=capeopen_thermo.System('TEA (CAPE-OPEN 1.1)')

pkg=system.create_package('Water-nButanol-UNIQUAC')

c1=pkg.compounds[0] #1番目の成分

#水の蒸気圧を求める場合の計算例

VPO=c1.get_temperature_dependent_property('VaporPressure',373.15)
print("VP=" + str(VPO/1000)) # Pa to kPa

#平衡計算の設定例(モル組成比1:1、大気圧、VF=0.5)

e=pkg.create_phase_equilibrium([0.5,0.5],'pressure',1.01325e5,'vaporFraction',0.5)

for phase in e.phases:
    print(phase.name,"fraction",phase.phase_fraction,"composition",phase.x,"density",phase.get_property('density'), "Cp", phase.get_property('enthalpy.Dtemperature'))

平衡計算部分の出力結果は以下の通り。

 

 

Xserverにdjangoをインストールする際のエラーについて

silverlightでウェブアプリを作成するのがしんどくなってきたので、djangoに挑戦することに。

しかし、pip installしようとすると、distro.pyに問題がある旨のエラーが出て失敗。

→Google検索でこちらの記事を見つけ無事解決。

改行も含めてdistro.pyの追記箇所を示すと以下の通り。

 

Djangoの設定については、こちらのリンクを参照。

(事前にflupのインストールが必要)

PythonのサイトパッケージのPathが分からなくなった場合は、以下のコマンドで確認可能。

python -m site

Djangoの勉強はこちらのサイトのはじめてのアプリからスタート。

ただ、views.pyの設定でエラーが発生。

こちらのサイトで解決。

 

 

Python + OpenModelicaでプロセスシミュレーションのケーススタディ

Principles of Object-Oriented Modeling and Simulation with Modelica 3.3: A Cyber-Physical Approach

が素晴らしい!

PythonとOpenModelicaがリンクできることを知り、簡単なモデルで挑戦。

まずはOpenModelicaをインストールし、以下のフォルダにあるsetup.pyからOMPython libraryを追加する。

続いてModelicaで検証用のサンプルを作成。

単純に1次遅れのモデルを作成し、Python側で遅れ定数を変えたケーススタディを行って、結果をまとめてプロットすることにした。

以下がModelicaのサンプル。

class Lag
Real x(start = 0);
Real t(start = 0);
input Real tau;
input Real inp ;
equation
tau*der(x) = inp-x;
der(t)=1;
end SRKEQ;

非常にシンプル。

上記をLagSample.moといった形で拡張子.moにして保存し、Python側で読みに行く。

Python側は以下。

まず、ModelicaSystemをimport⇒作成済のmoファイル中にあるクラスであるLagを読み込む⇒モデル中の変数に値を設定するためにsetInputs関数を使用⇒計算開始はsimulate()関数⇒計算結果の取得はgetSolutions()関数を使う。

[Python]

from OMPython import ModelicaSystem

lagmodel = ModelicaSystem(“LagSample.mo”,”Lag”)

lagmodel.setInputs(inp=1)

lagmodel.setInputs(tau=1)

lagmodel.simulate()

x_1,t=lagmodel.getSolutions(“x”,”t”)

lagmodel.setInputs(tau=2)

lagmodel.simulate()

x_2,t=lagmodel.getSolutions(“x”,”t”)

[/Python]

τ=1,2,3[sec]について計算して出力した結果が以下。

当然ながら単位ステップを与えた際に、それぞれτ=1,2,3[sec]での出力が1-1/eとなっていることが確認できる。

これだけのモデルだとわざわざModelicaとPythonを連携する意味が無いが、Modelicaでプロセスモデルを作成して、様々なケーススタディ、計算結果の視覚化、まとめをPythonで行うのは便利で、活用方法がありそうに感じた。

Microsoft Azure Machine Learning Studio事始め

事前準備

①まず、Microsoft Azure Machine Learning Studioを使うために、Microsoftのアカウントを作成しておいてください。

②次に、Microsoft Azureのアカウントを作成します。

③サインアップしたら、下図のように、Expreimentsをクリックしてください。

以上で事前準備は完了です。

なお、以下の記事を読むのが面倒、とにかく分かりやすく基本の使い方を見たい!という方は、私の記事を読むよりもまず以下のTutorialを見るのが一番です。

Hello World Experimentsの作成

Hello Worldとはいえ、あまりなにも処理が無いモデルだとAzure Machine Learningの素晴らしさが分からないかと思いますので車両価格予測モデルの作成を行っていきます。

なお、以下の本のPart1:Chapter2の一部を参考にしています。丁寧で非常に分かりやすいです。

新しいExperimentsの作成

①+newをクリックします。

②blankを選択します。

③experiment名を入力します。

データの準備

①まずは元々用意されているデータセットを使います。今回は、Automobile price data(Raw)をドラッグ&ドロップします。

②データセットの中身を確認したい場合は、右クリック→dataset→visualizeで確認できます。

メーカー名やエンジンタイプ、サイズ等、205行26列のデータが格納されています。

③ちなみに、特定のデータの分布を見たい場合は、列を選択することで表示できます。例えば、エンジンサイズを確認する場合、以下のように選択します。(累積分布や確率密度分布も確認できますし、軸を対数に変更することもできます)

また、ViewAsをクリックすると、Box Plotを表示させることも可能です。

 

試しに、馬力vs値段をプロットしてみると、以下のように相関が簡単に確認できます。

データの前処理

①欠損データを含むデータの前処理

Automobile price data(Raw)には、欠損データが含まれています。Normalized -lossesというColumnを見ると、41の欠損データがあります。

②欠損データを除くために、データを加工していきます。

Data Transformation→Manipulation→Select Columns in Datasheetを選択し、ワークシート上に配置します。

そのあと、”Automobile price data(Raw)”の出口portから、”Select Columns in Datasheet”の入り口portを接続します。

③Select Column in Datasetをクリックし、”Launch column selector”をクリックします。

④以下の流れで、”normalized-losses”をExclude(除外)します。

設定が完了すると、下図のように除外されたColumnが表示されます。

※各モジュールは、ダブルクリックすることでコメントを記載することが可能です。

⑤”normalized-losses”以外にも欠損データがあります。

欠損データを取り扱う場合は、大きく分けて1.前述のように欠損データを含むデータを削除する、2.欠損データを補間することが考えられますが、ここでは欠損データに0を代入していきます。(2については、欠損データを補間する方法もあります。)

Data Transformation→Manipulation→Clean Missing Dataを選択し、ワークシート上に配置します。設定は、defaultのままで大丈夫です。(欠損値に0を代入します)

そのあと、”Select Columns in Datasheet”の出口portから、”Clean Missing Data”の入り口portを接続します。

⑥これで事前処理は終了です。Runをクリックしてください。

Runが完了すると、緑色のチェックが表示されます。これで、データの前処理は完了です。

前処理後のデータを見たい場合は、下図のようにCleaned datasetをvisualizeしてみましょう。

“normalized-losses”の列が除外され、欠損データが0で置き換えられていることが確認できます。

車体価格予測に使用する説明変数の選択

①車体価格予測に使用する変数(特徴)を選択していきます。

下図のように、price(車両価格)に影響しそうな説明変数を、相関係数を元に求めます。(Features scoring methodを”Mutual Information”にする必要があります)

詳細は、こちらのリンクをご参照ください。

②Filtered Based Featureを右クリックし、Visualizeすると、メーカー名や相関係数を元に決定する場合、エンジンサイズや馬力等、概ね価格に影響しそうな変数を選択できていそうです。(ただ、相関係数で絞った場合、メーカーやbody-styleといった、価格に影響し得る要因に対して取りこぼしもあります。)

学習モデルの作成

いよいよ学習モデルを作成していきます。

①まず、下図の流れで前処理後のデータを、トレーニングデータとテストデータに分割します(トレーニングデータ:80%、テストデータ:20%)。

Row(行)で区切り、上から80%分をport1に出力します。

(各portをvisualizeで確認し、port1が164行、port2が41行であることを確認してください)

②回帰モデルを選択します。まずは、Linear Regressionモデルを試してみましょう。

③ワークシート上にTrain Modelを設置し、②で選択した回帰モデルとトレーニングデータ(トレーニングデータはport1です)を接続します。

④ここまでの設定を使って、モデルをRunさせてみましょう。

学習モデルの検証

前ステップで作成したモデルを使って、テストデータを使った精度検証を行っていきます。

①Scoreモデルをワークシート上に置き、テストデータ(Splitモジュールのport2)を接続します。

モデルをRunしてスコアを求めます。

②Scoreの評価を確認するため、Evaluationモジュールをワークシート上に設置し、Scoreモジュールの出口portと接続します。

モデルをRun  します。

③Evaluationを右クリックして、結果をvisualizeします。

決定係数が低い場合は、予測モデルを変えたり、説明変数を変えてみてください。

特に、今回メーカー名やbody style等、価格に影響を与えるはずの要素が抜けていますので、メーカー毎にモデルを変える等工夫してみてください。

 

 

C#からPythonの呼び出し

PythonスクリプトをC#から呼び出し

Visual StudioでUIを作ることに慣れてしまうと、tkinterでGUIを作成する気にはとてもなれず、C#からPythonスクリプトを呼び出す方法を調べていたところ、こちらの記事を発見。

この方法であれば、非常に簡単にPythonスクリプトを呼び出せる。

以前作成したBode線図作成のスクリプトをC#のexeファイルから呼び出してみた。

呼び出しに思った以上に時間がかかる点に難があるものの、簡単に呼び出し、実行ができるので便利。

(C#でのプロット作成はmatplotlibほど手軽ではないので、、、)

 

C++で学ぶディープラーニング

化学工学の世界でもチラホラ機械学習を活用した事例を耳にするようになってきた。

マテリアルインフォマティクスの分野での文献、特許探索や物性パラメーターの推算等、効率的な材料探索のために活用されている事例もあるようだ。

時代の流れに乗り遅れないよう、私もPythonのtensolflowから勉強を始め、その後Matalabで蒸気圧パラメーターの推算等取り組んでみたが、やはり自分で一から組みたくなり、参考書を数冊衝動買いしてしまう。

入門書~初級者レベルの本も買い込んだが、目的に合う本は、私の見た中ではタイトルの本一択だった。

C++の最低限の知識もフォローされているし、自分でニューラルネットワークを組むために必要なサンプルも提供されている。

各計算式のかなり丁寧に書かれているので非常に読みやすく、随所にある図解が、全体のイメージを把握する上で役立っている。ニューラルネットワーク自作入門も分かりやすかったが、これから始めて自作に取り組むという方に一冊だけ勧めるとしたら、私はタイトルの一冊をお勧めする。