Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Database Loader Error using ml.net

オープン
#955 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
35/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
csharp, machine-learning, sql

調査の方向性

TrainFromDatabase から始めて、DatabaseLoader が使用する OSEParams モデルを SELECT 列およびテキストファイルのスキーマと比較します。pipeline.Fit での失敗を再現し、その後、データベースを基盤とする IDataView の列型に互換性があり、Fit が正常に完了することを確認します。

索引モデルが issue の本文から書いたものです。

説明

I have a working ml.net application pulling data from a text file. I would like to pull the same data from MSSQL. However, I am getting an Invalid cast exception when attempting to run Fit.

System.InvalidCastException: 'Unable to cast object of type 'System.Byte' to type 'System.Single'.'

WORKING CODE:

 ITransformer TrainFromTextFile(MLContext mlContext, string dataPath)
        {
            
            // Load the csv formatted data...
            IDataView dataView = mlContext.Data.LoadFromTextFile<OSEParams>(dataPath, hasHeader: true, separatorChar: ',');

            var pipeline = mlContext.Transforms.CopyColumns(outputColumnName: "Label", inputColumnName: "OSE")
                .Append(mlContext.Transforms.Categorical.OneHotEncoding(outputColumnName: "ShiftEncoded", inputColumnName: "Shift"))
                .Append(mlContext.Transforms.Categorical.OneHotEncoding(outputColumnName: "ProductEncoded", inputColumnName: "Product"))
                .Append(mlContext.Transforms.Categorical.OneHotEncoding(outputColumnName: "TemperatureEncoded", inputColumnName: "Temperature"))
                .Append(mlContext.Transforms.Concatenate("Features", "ShiftEncoded", "TemperatureEncoded", "ProductEncoded", "PPM"))
                .Append(mlContext.Regression.Trainers.FastTree());
               

            var model = pipeline.Fit(dataView);
            return model;
        }

Code producing error when running .Fit

        ITransformer TrainFromDatabase(MLContext mlContext) {


            string connectionString = "Data Source=LARRY-PC\\SQLEXPRESS;Initial Catalog=LUL_OEE_TestData;Integrated Security=True;Pooling=False";
            string sqlCommand = "SELECT Current_Shift, Product, JDE, Temperature, PPM, OSE FROM LUL_OSE_Train_Data";
            DatabaseLoader loader = mlContext.Data.CreateDatabaseLoader<OSEParams>();
            DatabaseSource dbSource = new DatabaseSource(SqlClientFactory.Instance, connectionString, sqlCommand);
            IDataView dataView = loader.Load(dbSource);

            var pipeline = mlContext.Transforms.CopyColumns(outputColumnName: "Label", inputColumnName: "OSE")
                .Append(mlContext.Transforms.Categorical.OneHotEncoding(outputColumnName: "ShiftEncoded", inputColumnName: "Shift"))
                .Append(mlContext.Transforms.Categorical.OneHotEncoding(outputColumnName: "ProductEncoded", inputColumnName: "Product"))
                .Append(mlContext.Transforms.Categorical.OneHotEncoding(outputColumnName: "TemperatureEncoded", inputColumnName: "Temperature"))
                .Append(mlContext.Transforms.Concatenate("Features", "ShiftEncoded", "TemperatureEncoded", "ProductEncoded", "PPM"))
                .Append(mlContext.Regression.Trainers.FastTree());

            var model = pipeline.Fit(dataView);
            return model;

There is no issue pulling data from SQL. I'm using the same connection string and query to populate a DataGridView with no problems. The csv file is formatted just like the table.

Thanks for any help!

主要言語
PowerShell
スター
4.7k
フォーク
2.7k
PR マージ指標
30日以内にマージされた PR はありません

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

dotnet/machinelearning-samples のほかの issue

dotnet/machinelearning-samples の issue をすべて見る

似ている issue

Databases の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。