ML.NETが0.6にバージョンアップしました。
これにより、大幅にAPIが見直され、これまでのはLegacy名前空間に移行されてしまうという大変動ぶりには驚かされました。
そして、自分の書いていたソースはすでにレガシーとなったことにがっくし。
using Microsoft.ML.Legacy; using Microsoft.ML.Legacy.Models; using Microsoft.ML.Legacy.Data; using Microsoft.ML.Legacy.Transforms; using Microsoft.ML.Legacy.Trainers;
日本語ドキュメントはまだ古いままですね。
ML.NET を使用してアヤメの花をクラスター化する (クラスタリング) | Microsoft Docs
気を取り直して、0.6の説明を見てみることにしました。
短いサンプルは下記でも紹介されています。
Let's 10分 機械学習!
ML.NET Tutorial | Get started in 10 minutes
DataKind
以前はモデルとなるクラスを用意して、列ごとにプロパティを用意して、アトリビュートでカラム番号を宣言していました。
確かにこれはまだるっこしいですね。
が、読み込むとき、下記のようにDataKindを割り当てます。R4とは何のことやら?
new TextLoader.Column("SepalLength", DataKind.R4, 0),
が、何を選べばいいのか?
DataKind Enum (Microsoft.ML.Runtime.Data) | Microsoft Docs
説明なし...
Estimator
トレーニングを行うにあたっても、
var pipeline = new TermEstimator(env, "Label", "Label") .Append(new ConcatEstimator(env, "Features", "SepalLength", "SepalWidth", "PetalLength", "PetalWidth")) .Append(new SdcaMultiClassTrainer(env, new SdcaMultiClassTrainer.Arguments())) .Append(new KeyToValueEstimator(env, "PredictedLabel"));
TermEstimatorとは何なのか?
今回は数値から文字列でしたが、数値から数値にする場合はどうすればいいいのか。不明。
TermEstimatorのインテリセンスにはコメントなし。
最後に
全くためになる情報を提供できず申し訳ありません。
ASP.NET Coreという変革にチャレンジして、うまくいかなかったのを思い出します。
まだまだ、これからかなという気がしています。