dotnet / dotnet/machinelearning-samples
Database Loader Error using ml.net
- Lenguaje dominante
- PowerShell
- Estrellas
- 4.7k
- Forks
- 2.7k
- Merge medio
- 2 d 22 h
- PR fusionados (30 d)
- 1
Descripción
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!
Guía de contribución
Línea de trabajo
Empieza por TrainFromDatabase y compara el modelo OSEParams utilizado por DatabaseLoader con las columnas SELECT y el esquema del archivo de texto. Reproduce el fallo en pipeline.Fit y, después, verifica que IDataView respaldado por la base de datos tenga tipos de columna compatibles y que Fit se complete correctamente.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- csharp, machine-learning, sql
- Área
- databases, machine-learning
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100