TAG 機会学習

人工知能を開発する

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…

ニュース

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) =…

機械学習

<ZDNet Japan>スパースモデリングと機械学習の化学反応–関係性を機械が自動的に発見

機械学習の本を眺めてみよう これまで、少ないデータから意味を見出すための方法論「スパースモデリング」(スパース性)の概要や実践方法について触れてきたが、連載第3回目では機械学習におけるスパース性の利用を考えてみる。機械学習というと言葉自体は耳にしたことがある読者も大勢いるだろう。基本的には、「目の前…この記事の続きを読む

ニュース

【 Python で 自然言語処理 】オライリー本『実践 機械学習システム』p.57 の TfidfVectorizer を 英語トークン 語幹形変換 前工程 を組み込むようにオーバーライドした StemmedTfidfVectorizer を使ってみる

sklearnモジュール組み込み の TfidfVectorizer クラス の build_analyzerメソッドをオーバーライドしているだけなので、その他のメソッドの操作性は、Tfidfクラスと同じ 【 TfidfVectorizerクラス の 使い方 】 CHAZINE.COM SCIKIT-LEARN (2014/12/23)SKLEARNのVECTORIZER オライリー本『実践 機械学習システム』p.55 python3 import nltk.stem # p.55 english_stemmer = nltk.stem.SnowballStemmer(‘english’) from sklearn.feature_extraction.text import TfidfVectorizer class StemmedTfidfVectorizer(TfidfVectorizer): # p.57 def build_analyzer(self): analyzer = super(TfidfVectorizer, self).build_analyzer() return lambda doc: (english_stemmer.stem(w) for w in analyzer(doc)) ( NLTKモジュール の stemmer については、以下 を 参考 ) GitHub…