Accord .NETでモデリングする

まず、手始めに簡単な線形回帰を行ってみます。 #r "nuget:Accord" Installed package Accord version 3.8.0 #r "nuget:Accord.Statistics" Installed package Accord.Statistics version 3.8.0 using Accord.Statistics.Models.Regression.Linear; using System; double[] inputs = {80, 60, 10, 20, 30}; double[] outputs = {20, 40, 30, 50, 60}; var regression = new SimpleLinearRegression(); regression.Regress(inputs, outputs); var y = regression.Compute(85); var a = regression.Slope; var b = regression.Intercept; y 28.08823529411765 a -0.26470588235294107 b 50.58823529411764

4月 14, 2020 · 1 分 · 60 文字 · Me

Jupyter NotebookにC#をインストールする

.NET Core with Jupyter Notebooksにある通り、.NET CoreをJupyter Notebookから使えるようになったので、手元のWindows 環境でやってみました。Jupyter Notebookのインストールそのものは、Ububtu 18.04 環境上にJupyterとQ#環境を構築するあたりとか、その元とかが使えると思います。 基本的には dotnet tool install -g --add-source "https://dotnet.myget.org/F/dotnet-try/api/v3/index.json" Microsoft.dotnet-interactive とやって、.NET Interactiveをインストールして、Windows Terminalを再起動して、サーチパスを有効化し、 dotnet interactive jupyter installでjupyterのKernelをインストールしただけです。 あとは、おもむろにjupyter notebookでJupyter Notebookを起動。 System.Console.WriteLine("Foo"); とやって、Fooが出ることを確認できました。 うむ、すごく簡単。 次は、DataFrameで遊んでみよう。

3月 24, 2020 · 1 分 · 33 文字 · Me

JupyterにMicrosoft.Data.Analysisを入れてみる

Jupyter環境に展開したC#にMicorosoft.Data.Analysisを載せてみました。 #r "nuget:Microsoft.Data.Analysis, 0.2.0" Installing package Microsoft.Data.Analysis, version 0.2.0………done! using Microsoft.Data.Analysis; #r "nuget:MathNet.Numerics,4.9.0" Installing package MathNet.Numerics, version 4.9.0…….done! Successfully added reference to package MathNet.Numerics, version #r "nuget:XPlot.Plotly" Installing package XPlot.Plotly……….done! Successfully added reference to package XPlot.Plotly, version using MathNet.Numerics; using XPlot.Plotly; var df = Microsoft.Data.Analysis.DataFrame.LoadCsv("Data/german.csv"); df Columns Rows [ [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 … (990 more) ], [ A11, A12, A14, A11, A11, A14, A14, A12, A14, A12 … (990 more) ], [ 6, 48, 12, 42, 24, 36, 24, 36, 12, 30 … (990 more) ], [ A34, A32, A34, A32, A33, A32, A32, A32, A32, A34 … (990 more) ], [ A43, A43, A46, A42, A40, A46, A42, A41, A43, A40 … (990 more) ], [ 1169, 5951, 2096, 7882, 4870, 9055, 2835, 6948, 3059, 5234 … (990 more) ], [ A65, A61, A61, A61, A61, A65, A63, A61, A64, A61 … (990 more) ], [ A75, A73, A74, A74, A73, A73, A75, A73, A74, A71 … (990 more) ], [ 4, 2, 2, 2, 3, 2, 3, 2, 2, 4 … (990 more) ], [ A93, A92, A93, A93, A93, A93, A93, A93, A91, A94 … (990 more) ] … (12 more) ] [ [ 0, A11, 6, A34, A43, 1169, A65, A75, 4, A93 … (12 more) ], [ 1, A12, 48, A32, A43, 5951, A61, A73, 2, A92 … (12 more) ], [ 2, A14, 12, A34, A46, 2096, A61, A74, 2, A93 … (12 more) ], [ 3, A11, 42, A32, A42, 7882, A61, A74, 2, A93 … (12 more) ], [ 4, A11, 24, A33, A40, 4870, A61, A73, 3, A93 … (12 more) ], [ 5, A14, 36, A32, A46, 9055, A65, A73, 2, A93 … (12 more) ], [ 6, A14, 24, A32, A42, 2835, A63, A75, 3, A93 … (12 more) ], [ 7, A12, 36, A32, A41, 6948, A61, A73, 2, A93 … (12 more) ], [ 8, A14, 12, A32, A43, 3059, A64, A74, 2, A91 … (12 more) ], [ 9, A12, 30, A34, A40, 5234, A61, A71, 4, A94 … (12 more) ] … (990 more) ] ...

3月 24, 2020 · 2 分 · 372 文字 · Me

ProphetをWindows上のAnacondaにインストールする

前提条件としてはpipを使わないことを前提としています。condaとpipの混合はどう考えても安全性に乏しいので可能な限りcondaだけでいく前提です。 仮想環境の作成 conda create -n prophet_env python=3.7 仮想環境の利用開始 conda activate prophet_env libpythonとm2w64-toolchainパッケージのインストール conda install libpython conda install -c msys2 m2w64-toolchain パッケージのインストール conda install numpy cython matplotlib pandas conda install -c conda-forge fbprophet pystanのテスト import pystan model_code = 'parameters {real y;} model {y ~ normal(0,1);}' model = pystan.StanModel(model_code=model_code) y = model.sampling(n_jobs=1).extract()['y'] print(y.mean())

12月 26, 2019 · 1 分 · 51 文字 · Me

Windowsでdotfilesの世界をパクリんぐする

アドベントカレンダーに参加しています。 dotfiles Advent Calendar 2019 Windowsでdotfilesの世界をパクリんぐする話をします。 Windowsにおける設定情報 Windowsにおいては昨今、設定情報はかなり混沌と設定している、今となってはレガシー化しつつある、レジストリ情報に加えて、*NIX風のdotfilesをUser Profileの直下に置くパターンなどいくつものパターンがある。一旦、整理してから話を進めたい。 レジストリ情報 dotfilesの方向性としては異なるが整理のため、触れることにする。レジストリ情報はHKEY_LOCAL_MACHINEなど各種の階層で格納されているが一般にユーザごとの情報はHKEY_USERSの下にあり、実際にはそれがHKEY_CURRENT_USERにリンクされているものと考えられる。ただ、これは知っての通りバイナリデータとしてユーザにはコントロールしにくい形で存在していること、また、dotfilesの形とは言い難いため議論はここまでとする。 User Profilesの下に置かれるdotfiles User ProfileはデフォルトのインストールではUsers\<ユーザ名>に置かれるファイル群である。この中にはHKEY_USERSに置かれているレジストリも含まれている。昨今では特に*NIXからポーティングされたツールを中心にここに.で始まるファイルや_などで始まるファイル群を展開するものが散見される。例えば、scoopでvimをインストールした場合、_vimrcはUser Profileの直下に格納される。 User ProfileのAppData以下 User Profileには一般にAppDataとDocumentsが格納されている。標準的なデザインとしてはユーザにその存在を認識させるファイルはDocumentsにその存在を認識させなくてもいいファイルをAppDataに格納し、さらにAppDataの中で移動プロファイルでローミングするファイルはRoamingにマシン固有のファイルはLocalに置かれることになっている。例えば、ConsoleZの設定情報はAppData内のRoamingにConsole\console.xmlという形で格納されている。また、Visual Studio Codeの設定情報はRoamingのcode以下に格納されている。 UWPのLocalState 狭義のUWP (U先のniversal Windows Platform)アプリケーションにおいては、先のAppDataのLocalの下にあるPackagesディレクトリの下にアプリケーションごとにディレクトリを作成しその中にある、LocalStateディレクトリ内に格納されることが多い。たとえば、WindowsTerminalにおいては、少なくとも現時点においてはPackages内のMicrosoft.WindowsTerminal_8wekyb3d8bbweディレクトリにLocalStateが存在している。 WSL WSL1の場合は、ファイル群はdevfsとdrvfsと考えられるが、一般にdevfsの構造はWindowsから見ると深いディレクトリに置かれていること、また、Windows側からdevfsのファイルを操作すると、metadataを損壊することになるため、注意を要する。従って、WSLの設定情報については現状、Windowsのdrvfsにレポジトリをおいて、適時シンボリックリンクを張っているが、後述する、Windows上でのgitの特性から、WSL上で独自にdotfilesをコントロールしたほうがいいかもしれない。 dotfilesによる設定情報のコントロール dotfilesでコントロールしやすいもの 先までに上げたものの中で、dotfilesによるコントロールに適するのは基本的にはレジストリを除いたものであると考えられる。レジストリはバイナリデータとして格納されているため、*NIX的な管理はし辛い。 dotfilesによるコントロールのサンプル dotfiles風にコントロールの容易なものとして、以下に例をあげる。 vimrc Windows Terminal git nyagos ConsoleZ WSLのdotfiles これらを分類すると以下のようになる。 名前 種類 vimrc User Profile Windows Terminal UWP LocalState git User Profile nyagos User Profile ConsoleZ AppData WSL dotfiles WSL シンボリックリンクの活用 レポジトリから各ファイルへはシンボリックリンクを用いる。シンボリックリンクは開発者モードでは一般ユーザでも作成できる。ただし、開発者モード以外ではシンボリックリンクの作成には管理者特権が必要であるため、シンボリックリンクの構築スクリプトをPowerShellで作る場合、以下のような構造になるであろう。 $userProfile = $env:USERPROFILE if($PSVersionTable.PSVersion.Major -gt 4) { if (([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(` [Security.Principal.WindowsBuiltInRole] "Administrator")) { } else { Write-Warning "管理者権限が付与されていません" exit 1 } } else { Write-Warning "PowerShellのバージョンが条件を満たしていません" } PowerShellのバージョンを確認するのはPowerShellでシンボリックリンクが作成できるようになったのは、Windows PowerShell 5.xからであり、それ以下の場合には構築できないだけでなく、削除をした場合にリンクが削除されるだけでなく元のファイルまで消えてしまうためである。したがって、バージョンを確認する必要がある。 ...

12月 24, 2019 · 2 分 · 383 文字 · Me