I’m getting the following exception:
<code>System.ArgumentOutOfRangeException: 'Could not determine an IDataView type and registered custom types for member ValueType (Parameter 'rawType')'
</code>
<code>System.ArgumentOutOfRangeException: 'Could not determine an IDataView type and registered custom types for member ValueType (Parameter 'rawType')'
</code>
System.ArgumentOutOfRangeException: 'Could not determine an IDataView type and registered custom types for member ValueType (Parameter 'rawType')'
For those 2 cases:
Case 1 : (could be normal to me to get the exception here):
<code>MLContext mlContext = new MLContext();
var dataViewDateTimeValues = mlContext.Data.LoadFromEnumerable(dateTimeValues.Data.Values);
</code>
<code>MLContext mlContext = new MLContext();
var dataViewDateTimeValues = mlContext.Data.LoadFromEnumerable(dateTimeValues.Data.Values);
</code>
MLContext mlContext = new MLContext();
var dataViewDateTimeValues = mlContext.Data.LoadFromEnumerable(dateTimeValues.Data.Values);
Case 2 : exception either here? Why and how to solve it? (does not like ‘ValueType’ where is not in the schema here:
<code>MLContext mlContext = new MLContext();
var dataViewDateTimeValues = mlContext.Data.LoadFromEnumerable(dateTimeValues.Data.Values);
var builder = new DataViewSchema.Builder();
builder.AddColumn("DateTimeOffset", Microsoft.ML.Data.DateTimeOffsetDataViewType.Instance);
builder.AddColumn("Value", Microsoft.ML.Data.NumberDataViewType.Single);
DataViewSchema schema = builder.ToSchema();
</code>
<code>MLContext mlContext = new MLContext();
var dataViewDateTimeValues = mlContext.Data.LoadFromEnumerable(dateTimeValues.Data.Values);
var builder = new DataViewSchema.Builder();
builder.AddColumn("DateTimeOffset", Microsoft.ML.Data.DateTimeOffsetDataViewType.Instance);
builder.AddColumn("Value", Microsoft.ML.Data.NumberDataViewType.Single);
DataViewSchema schema = builder.ToSchema();
</code>
MLContext mlContext = new MLContext();
var dataViewDateTimeValues = mlContext.Data.LoadFromEnumerable(dateTimeValues.Data.Values);
var builder = new DataViewSchema.Builder();
builder.AddColumn("DateTimeOffset", Microsoft.ML.Data.DateTimeOffsetDataViewType.Instance);
builder.AddColumn("Value", Microsoft.ML.Data.NumberDataViewType.Single);
DataViewSchema schema = builder.ToSchema();
For my class:
<code>using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CommunityToolkit.Mvvm.ComponentModel;
using Microsoft.ML.Data;
using System.Reflection.Metadata.Ecma335;
namespace CommanDER.Forecast
{
public class DateTimeValue : ObservableObject
{
public DateTimeValue()
{
DateTimeOffset = default;
Value = 0;
}
public DateTimeValue(DateTimeOffset dateTime, float value)
{
DateTimeOffset = dateTime;
Value = value;
}
public DateTimeValue(DateTimeOffset dateTime, double value)
{
DateTimeOffset = dateTime;
ValueDouble = value;
}
public const string DateTimeValueFormat = "yyyy-MM-dd HH:mm";
[Display(AutoGenerateField = false)]
[Browsable(false)]
[LoadColumn(0)] // EO: For ML.net, for file usage in CSV or TSV (tab separarted value)
public DateTimeOffset DateTimeOffset { get; set; }
[LoadColumn(1)] // EO: for file usage in CSV ot TSV (tab separarted value) (used also in ml.net ???)
public float Value { get; set; } // Float seems to be required by ml.net
public double ValueDouble { get => Value; set => Value = (float)value; }
private double[]? _mlPrediction;
[VectorType(7)]
public double[]? MlPrediction { get => _mlPrediction; set => SetProperty(ref _mlPrediction, value); } // = new double[TotalGuessOfCount];
public string MlPredictionDisplay
{
get => MlPrediction is null ? "{null}" : string.Join(", ", MlPrediction);
}
private ValueTypeEnum _valueType = ValueTypeEnum.Raw;
[Browsable(false)]
public ValueTypeEnum ValueType { get => _valueType; set => SetProperty(ref _valueType, value); }
private DateTimeOffset _dateTimeValueCopied = default;
[Browsable(false)]
public DateTimeOffset DateTimeValueCopied { get => _dateTimeValueCopied; set => SetProperty(ref _dateTimeValueCopied, value); } // Usually not used otherwise should be a multiple of 7 at same time in order to get same day of week.
public override string ToString()
{
return $"Date: {DateTimeOffset.ToString(DateTimeValueFormat)}, Value: {Value}";
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CommanDER.Forecast
{
public enum ValueTypeEnum
{
Raw = 0,
Interpolated = 1,
CopiedFromAnotherDateTime = 2,
OutOfRange = 3,
}
}
</code>
<code>using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CommunityToolkit.Mvvm.ComponentModel;
using Microsoft.ML.Data;
using System.Reflection.Metadata.Ecma335;
namespace CommanDER.Forecast
{
public class DateTimeValue : ObservableObject
{
public DateTimeValue()
{
DateTimeOffset = default;
Value = 0;
}
public DateTimeValue(DateTimeOffset dateTime, float value)
{
DateTimeOffset = dateTime;
Value = value;
}
public DateTimeValue(DateTimeOffset dateTime, double value)
{
DateTimeOffset = dateTime;
ValueDouble = value;
}
public const string DateTimeValueFormat = "yyyy-MM-dd HH:mm";
[Display(AutoGenerateField = false)]
[Browsable(false)]
[LoadColumn(0)] // EO: For ML.net, for file usage in CSV or TSV (tab separarted value)
public DateTimeOffset DateTimeOffset { get; set; }
[LoadColumn(1)] // EO: for file usage in CSV ot TSV (tab separarted value) (used also in ml.net ???)
public float Value { get; set; } // Float seems to be required by ml.net
public double ValueDouble { get => Value; set => Value = (float)value; }
private double[]? _mlPrediction;
[VectorType(7)]
public double[]? MlPrediction { get => _mlPrediction; set => SetProperty(ref _mlPrediction, value); } // = new double[TotalGuessOfCount];
public string MlPredictionDisplay
{
get => MlPrediction is null ? "{null}" : string.Join(", ", MlPrediction);
}
private ValueTypeEnum _valueType = ValueTypeEnum.Raw;
[Browsable(false)]
public ValueTypeEnum ValueType { get => _valueType; set => SetProperty(ref _valueType, value); }
private DateTimeOffset _dateTimeValueCopied = default;
[Browsable(false)]
public DateTimeOffset DateTimeValueCopied { get => _dateTimeValueCopied; set => SetProperty(ref _dateTimeValueCopied, value); } // Usually not used otherwise should be a multiple of 7 at same time in order to get same day of week.
public override string ToString()
{
return $"Date: {DateTimeOffset.ToString(DateTimeValueFormat)}, Value: {Value}";
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CommanDER.Forecast
{
public enum ValueTypeEnum
{
Raw = 0,
Interpolated = 1,
CopiedFromAnotherDateTime = 2,
OutOfRange = 3,
}
}
</code>
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CommunityToolkit.Mvvm.ComponentModel;
using Microsoft.ML.Data;
using System.Reflection.Metadata.Ecma335;
namespace CommanDER.Forecast
{
public class DateTimeValue : ObservableObject
{
public DateTimeValue()
{
DateTimeOffset = default;
Value = 0;
}
public DateTimeValue(DateTimeOffset dateTime, float value)
{
DateTimeOffset = dateTime;
Value = value;
}
public DateTimeValue(DateTimeOffset dateTime, double value)
{
DateTimeOffset = dateTime;
ValueDouble = value;
}
public const string DateTimeValueFormat = "yyyy-MM-dd HH:mm";
[Display(AutoGenerateField = false)]
[Browsable(false)]
[LoadColumn(0)] // EO: For ML.net, for file usage in CSV or TSV (tab separarted value)
public DateTimeOffset DateTimeOffset { get; set; }
[LoadColumn(1)] // EO: for file usage in CSV ot TSV (tab separarted value) (used also in ml.net ???)
public float Value { get; set; } // Float seems to be required by ml.net
public double ValueDouble { get => Value; set => Value = (float)value; }
private double[]? _mlPrediction;
[VectorType(7)]
public double[]? MlPrediction { get => _mlPrediction; set => SetProperty(ref _mlPrediction, value); } // = new double[TotalGuessOfCount];
public string MlPredictionDisplay
{
get => MlPrediction is null ? "{null}" : string.Join(", ", MlPrediction);
}
private ValueTypeEnum _valueType = ValueTypeEnum.Raw;
[Browsable(false)]
public ValueTypeEnum ValueType { get => _valueType; set => SetProperty(ref _valueType, value); }
private DateTimeOffset _dateTimeValueCopied = default;
[Browsable(false)]
public DateTimeOffset DateTimeValueCopied { get => _dateTimeValueCopied; set => SetProperty(ref _dateTimeValueCopied, value); } // Usually not used otherwise should be a multiple of 7 at same time in order to get same day of week.
public override string ToString()
{
return $"Date: {DateTimeOffset.ToString(DateTimeValueFormat)}, Value: {Value}";
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CommanDER.Forecast
{
public enum ValueTypeEnum
{
Raw = 0,
Interpolated = 1,
CopiedFromAnotherDateTime = 2,
OutOfRange = 3,
}
}