dotnet / dotnet/machinelearning-samples
Database Loader Error using ml.net
- 主要言語
- PowerShell
- スター
- 4.7k
- フォーク
- 2.7k
- 平均マージ
- 2日 22時間
- マージ済み PR(30日)
- 1
説明
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:
```C#
ITransformer TrainFromTextFile(MLContext mlContext, string dataPath)
{
// Load the csv formatted data...
IDataView dataView = mlContext.Data.LoadFromTextFile(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
```C#
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();
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!
コントリビューションガイド
調査の方向性
TrainFromDatabase から始めて、DatabaseLoader が使用する OSEParams モデルを SELECT 列およびテキストファイルのスキーマと比較します。pipeline.Fit での失敗を再現し、その後、データベースを基盤とする IDataView の列型に互換性があり、Fit が正常に完了することを確認します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- csharp, machine-learning, sql
- 領域
- databases, machine-learning
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100