dotnet / dotnet/machinelearning-samples
Database Loader Error using ml.net
- Langage dominant
- PowerShell
- Étoiles
- 4.7k
- Forks
- 2.7k
- Merge moyen
- 2 j 22 h
- PR mergées (30 j)
- 1
Description
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!
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par TrainFromDatabase et comparez le modèle OSEParams utilisé par DatabaseLoader avec les colonnes SELECT et le schéma du fichier texte. Reproduisez l’échec au niveau de pipeline.Fit, puis vérifiez que l’IDataView alimenté par la base de données possède des types de colonnes compatibles et que Fit s’achève avec succès.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- csharp, machine-learning, sql
- Domaine
- databases, machine-learning
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100