UnityとF#で機械学習① k-nearest neighbour algorithm


はじめに
F#と機械学習に関する本は、日本語のものは見当たらないので、英語の本で勉強することになります。いくつかある中で、最近発刊された”F# for Machine Learning Essentials” (Sudipta Mukherjee 著)は手軽に勉強できそうな感じだったので、ちょっと見て見ることにしました(以下では「原著」と呼ぶ)。ここでは、第1章に出てくる k-nearest neighbour algorithmをUnityで実行してみました。

扱う問題
こちらにある手書き文字のデータを使い、文字認識を行います。各手書き文字は28*28の行列を一列に広げたものとして表現され、入力するデータと一番近いデータをk-nearest neighbour algorithm (参考資料)で抽出します。

Unityでの実行
UnityでのF#の使い方は、こちらの過去記事を参考にしてください。
こちらの記事でも書いた通り、UnityからF#のライブラリを呼び出すにはnamespaceを定義しますが、namespaceは直接に値や関数を持てないので、moduleを指定する必要があります。原著のサンプルコードではmoduleは指定されてないので、こちらで加えます。
また、Unityでは、Monoのバージョンの関係で F# 3.0しか使えないので、F# 4.0の文法を使っている部分は修正が必要です。

Unity用の修正版

Library1.fs
namespace DigitRecognition //追加
open System.IO
open System
module DigitRecognitionEntry = //追加
type Entry = {Label: string; Values: int list }
let distance (values1: int list, values2: int list) =
  **省略 原著参照**

let loadValues (filename: string ) =
  **省略 原著参照**
let kNN (entries : Entry list, newEntry : string * int[] , k: int) =
  **省略 原著…この記事の続きを読む

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

無料メールマガジン登録

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

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

規約に同意する


Leave a Reply

Your email address will not be published.