2023/05/08

Machine Learning:機械学習(3)

本日一連の動作が出来るまで来ましたが、最初の時に書いた データクラスなんですが、これ、まあ、頭の片隅にml.netのチュートリアルを観てた時だったか何かで単精度実数ってのが全てに使われる的な話があったんですが、気にせずに普通のクラスを書きました。しかし、動かしてみるとそれが原因でエラーになり思い出す始末。で、クラスメンバー全てfloat型に修正してどうにか動く所までは来ました。

トレーニングパイプラインの所がJouCDが文字列だから的なのが、データクラス全てをfloat型にしたので必要なくなり、抜けもありました。機械学習タスクを追加しなきゃならない所が抜けてましたので、

var pipeline = mlContext.Transforms.CopyColumns(outputColumnName: "Label", inputColumnName: "Souha")
    .Append(mlContext.Transforms.Concatenate("Features",
            "JouCD", "TrackCD", "Kyori", "Tenko", "Baba", "Chichi", "KishuSyoritsu", "ChokyosiSyoritsu"))
    .Append(mlContext.Regression.Trainers.LbfgsPoissonRegression());

って感じに変更。あっ、データクラス修正時に追加項目がありちょっとその辺りも変わってます。本当は、FastTreeRegressionTrainerをってチュートリアルには書かれていますが、その通りに真似しようとしてもそんなトレーナー無いよって😖 でまあ、選択可能な3つ位あるRegressionから上記のもので試しました。

検証で、検証期間のデータをまたリストに読み込んでdataView用意して、

var predictions = model.Transform(dataView);

として予測して、

var metrics = mlContext.Regression.Evaluate(predictions, "Label", "Score");

で、評価なか。metrics.RSquaredとmetrics.RootMeanSquaredErrorが結果らしい。

しかし、結局の所、自分のものに出来ていないので本来のモデルビルダー利用して簡単に出来るらしい事が出来てないorz モデルビルダーはautoMLをサポートしていて、さまざまな機械学習アルゴリズムと設定が自動的に探索され、シナリオに最適なものを見つけるのに役立つらしい。モデルビルダー使ったチュートリアル動画観てると確かに5個位の結果の中から一番良いものが選択出来るようになっていて、そのシナリオのコーディングを使う的な話になってた感じ。先はまだまだ長そうです😓

0 件のコメント:

コメントを投稿