C# ML.NET-功能列的架构不匹配';功能';:期望向量<;单个>;,得到向量<;Int32>;
我只是试着做我的第一个ML.NET项目,我以前用Azure ML、可视化界面、Python等构建过这个项目,但现在我想用C来做 我在学习教程,但使用了完全不同的数据集和目的 数据集有很多额外的列,但我的数据模型如下所示(指向数据集中列的索引): 错误来自培训功能:C# ML.NET-功能列的架构不匹配';功能';:期望向量<;单个>;,得到向量<;Int32>;,c#,classification,multiclass-classification,ml.net,C#,Classification,Multiclass Classification,Ml.net,我只是试着做我的第一个ML.NET项目,我以前用Azure ML、可视化界面、Python等构建过这个项目,但现在我想用C来做 我在学习教程,但使用了完全不同的数据集和目的 数据集有很多额外的列,但我的数据模型如下所示(指向数据集中列的索引): 错误来自培训功能: public static IEstimator<ITransformer> BuildAndTrainModel(IDataView trainingDataView, IEstimator<ITransforme
public static IEstimator<ITransformer> BuildAndTrainModel(IDataView trainingDataView, IEstimator<ITransformer> pipeline)
{
var trainingPipeline = pipeline
.Append(_mlContext.MulticlassClassification.Trainers
.SdcaMaximumEntropy("Label", "Features"))
.Append(_mlContext.Transforms.Conversion
.MapKeyToValue("PredictedLabel"));
_trainedModel = trainingPipeline.Fit(trainingDataView);
_predEngine = _mlContext.Model
.CreatePredictionEngine<Earthquake, DamagePrediction>(_trainedModel);
Earthquake building = new Earthquake()
{
geo_level_1_id = 1,
geo_level_2_id = 42,
geo_level_3_id = 941,
count_floors_pre_eq = 2,
age = 0,
area = 24,
height = 4,
count_families = 2,
has_secondary_use = 0,
square = 4.898979485566356,
difference = 0.8989794855663558
};
var prediction = _predEngine.Predict(building);
Console.WriteLine($"=============== Single Prediction just-trained-model - Result: {prediction.damage_grade} ===============");
return trainingPipeline;
}
publicstaticiestimator BuildAndTrainModel(IDataView trainingDataView,IEstimator管道)
{
var培训管道=管道
.Append(mlContext.MulticlassClassification.Trainers
.sdcamaximummentropy(“标签”、“特征”))
.Append(_mlContext.Transforms.Conversion
.MapKeyToValue(“PredictedLabel”);
_trainedModel=trainingPipeline.Fit(trainingDataView);
_predEngine=\u mlContext.Model
.CreatePredictionEngine(_trainedModel);
地震建筑=新地震()
{
geo_level_1_id=1,
geo_level_2_id=42,
geo_level_3_id=941,
计数\u楼层\u预\u等式=2,
年龄=0,
面积=24,
高度=4,
count_families=2,
具有辅助用途=0,
正方形=4.898979485566356,
差异=0.89794855663558
};
var预测=_predEngine.Predict(构建);
Console.WriteLine($“========================================================================================”;
回流培训管道;
}
上面说:
引发异常:中的“System.ArgumentOutOfRangeException”
Microsoft.ML.Data.dll类型的未处理异常
Microsoft.ML.Data.dll中出现“System.ArgumentOutOfRangeException”
功能列“功能”的架构不匹配:应为
向量提前感谢您的所有想法 我认为问题在于,您在
地震
中声明了一些属性为双属性
,而它们应该是浮动
(又称系统。单属性
)严重,就是这样吗O我今天晚些时候尝试一下,谢谢:)数据库和c代码之间的映射不匹配。您的Loadcolumn索引可能错误。索引可能从零开始,而你从一开始。@Eva我不确定,它只是一个guess@jdweng,我从0开始索引,我加载这样的列,它们在数据集中的位置,在索引0处,或者其他地方。。。但我会检查编号是否正确,谢谢:)
public static IEstimator<ITransformer> BuildAndTrainModel(IDataView trainingDataView, IEstimator<ITransformer> pipeline)
{
var trainingPipeline = pipeline
.Append(_mlContext.MulticlassClassification.Trainers
.SdcaMaximumEntropy("Label", "Features"))
.Append(_mlContext.Transforms.Conversion
.MapKeyToValue("PredictedLabel"));
_trainedModel = trainingPipeline.Fit(trainingDataView);
_predEngine = _mlContext.Model
.CreatePredictionEngine<Earthquake, DamagePrediction>(_trainedModel);
Earthquake building = new Earthquake()
{
geo_level_1_id = 1,
geo_level_2_id = 42,
geo_level_3_id = 941,
count_floors_pre_eq = 2,
age = 0,
area = 24,
height = 4,
count_families = 2,
has_secondary_use = 0,
square = 4.898979485566356,
difference = 0.8989794855663558
};
var prediction = _predEngine.Predict(building);
Console.WriteLine($"=============== Single Prediction just-trained-model - Result: {prediction.damage_grade} ===============");
return trainingPipeline;
}