2023/05/05

Machine Learning:機械学習

 どうやら、人工知能の下位カテゴリに入るらしい機械学習ですが、この節目に挑んでみましょう。って事で、もう今回のプロジェクト作り始めた時から手を出そうとは思っていたけど、なかなか手が出ない。ってか、本家Microsoftのチュートリアルの方は微妙なアクセントがある方で見ていても若干違和感はある。まあ、それでもざっくりと理解はしたつもりです。その程度の英語の理解力はまだ残っているかと思います。しかし、実際にコーディングに取り掛かろうとml.netを何だっけ? モデルビルダー使ってとか、行き成りテキストかSQL Serverかの2択とかね😖 こちらはSQLiteなんでどうすんだよって感じになる。いや、別に入力が何でも出来るのは普通。しかもこのml.netってオープンソースでごにょごにょってやつなのでMicrosoftには縛られていない筈。

で、まあ、本来分かりやすくあちこちにチュートリアルで使われるコンソールアプリケーションですが、今時コンソールアプリを作る人って少数派では? なのに普通に探すとそんなんばっかりです。自分自身はWindowsフォームアプリ作ってるので回り道は避けたいのでプロジェクトのフォームの1つとして実装してみようと今日から本腰を入れて取り掛かってみます。

using Microsoft.ML.Data;

これをまず入れるんですが、これが既に名前空間'Microsoft'には'ML'とかないよってorz 参照が足りてないんですね。で、NuGetパッケージマネージャーでMicrosoft.MLを入れろって事で入れます。次にデータクラスを作成するって。まあね、今回はまだまだ最初なので簡単な物にして今後色々とって事で😉

public class ShinbaTime
{
    [LoadColumn(0)]
    public string JouCD;
    [LoadColumn(1)]
    public byte TrackCD;
    [LoadColumn(2)]
    public short Kyori;
    [LoadColumn(3)]
    public byte Baba;
    [LoadColumn(4)]
    public float Souha;
}
public class ShinbaTimePrediction
{
    [ColumnName("Score")]
    public float Souha;
}

こんな感じでしてみます。で、これはプロジェクトに新しいクラスとして"ShinbaTime.cs"って事で追加してみました。最初はフォームのローカルクラスとして定義してみたけど、チュートリアルではクラスとして追加するってなってるので。更にチュートリアルではこのクラスのPredictionの方をusingでってなってるので真似してみるとそんなのいらねえって😓 コンソールアプリケーションでは必要でWindowsフォームアプリでは不要って事じゃないと思うけど、なんだろね~。で、フォームのローカル変数として、

MLContext mlContext;

を定義して、Loadイベントで

mlContext = new MLContext(seed: 0);

ってな感じで初期化する。今日はここまでにします。

0 件のコメント:

コメントを投稿