ML.NET:功能列“功能”的架构不匹配

时间:2019-03-17 21:28:07

标签: c# .net machine-learning ml.net

我正在尝试学习ML.NET/进入机器学习,但遇到了一个问题。

我的目标是创建一个训练模型,该模型可用于根据输入来预测城市。

此代码:

var dataPath = "cities.csv";
var mlContext = new MLContext();
var loader = mlContext.Data.CreateTextLoader<CityData>(hasHeader: false, separatorChar: ',');

var data = loader.Load(dataPath);

string featuresColumnName = "Features";

var pipeline = mlContext.Transforms.Concatenate(featuresColumnName, "PostalCode", "CityName")
        .Append(mlContext.Clustering.Trainers.KMeans(featuresColumnName, clustersCount: 3));

var model = pipeline.Fit(data);

应该以CSV作为输入(其中包含城市列表(列0 =邮政编码,列1 = CityName),然后将这些功能添加到管道中,出现以下错误:

Unhandled Exception: System.ArgumentOutOfRangeException: Schema mismatch for feature column 'Features': expected Vector<R4>, got Vector<Text>

在“适合”功能上。

我已经在GitHub Repo上做了一些挖掘,但是我似乎找不到解决方案。我正在使用“虹膜”示例(here)(当然,需要我的修改)

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

使用FeaturizeText将字符串功能转换为浮点数组功能

var pipeline = mlContext.Transforms
    .Text.FeaturizeText("PostalCodeF", "PostalCode")
    .Append(mlContext.Transforms.Text.FeaturizeText("CityNameF", "CityName"))
    .Append(mlContext.Transforms.Concatenate(featuresColumnName, "PostalCodeF", "CityNameF"))
    .Append(mlContext.Clustering.Trainers.KMeans(featuresColumnName, clustersCount: 3));

var model = pipeline.Fit(data);