UnityとF#で機械学習③:線形回帰と結果のプロット


はじめに
“F# for Machine Learning Essentials” (Sudipta Mukherjee 著 以下「原著」) の第2章 “Linear Regression”(線形回帰)で出てくる、線形回帰と結果のプロットの話です。ここでは、線形回帰とは二つの変数の関係を最もよく表す直線を見つける事とお考えください。
F#での線形回帰の計算はMath.NET for Numericsを使えばよいのですが、結果のプロットはUnityの標準機能ではできません。そこで、今回はGraph Makerという有料のアセットを使ってみます。F#のところだけなら有料アセット無しでも実行できるので、アセットを買いたくない方は、そちらだけお試しください。

参考資料
原著のコード こちらにある。
Wikipedia 線形回帰

F#側のコード
原著のコードがわかりづらい表記だったので、シンプルに書き直しました。SimpleRegression.Fitの使い方が原著と異なるのに注意してください(原著のままだと、F#3.0ではエラーになる)。

namespace LinearRegressionLibrary
open MathNet.Numerics.LinearAlgebra
open MathNet.Numerics.LinearRegression
open System.IO
module LinearRegress =
let rnd = System.Random()
let genX n =
List.init n (fun _ -> float(rnd.Next (0,100))) //nで指定される数だけランダムに0~100の値を作る
let xList = genX 20 //ランダムな値を20個用意
let yArray = xList |> List.map ( fun t -> float (t*2.0+float(rnd.Next(0,20))*0.1))
|> List.toArray //作ったxListを用いて、 yArray = x*2+noise[0,2] という形でyArrayを作る
let xArray = xList |>List.toArray
この記事の続きを読む

AINOW

人工知能専門メディアAINOW(エーアイナウ)です。人工知能を知り・学び・役立てることができる国内最大級の人工知能専門メディアです。2016年7月に創設されました。取材のご依頼もどうぞ。https://form.run/@ainow-interview

サイト名: Qiita - c#

無料メールマガジン登録

週1回、注目のAIニュースやイベント情報を
編集部がピックアップしてお届けしています。

こちらの規約にご同意のうえチェックしてください。

規約に同意する


Leave a Reply

Your email address will not be published.