ML.NET:特征列的架构不匹配 'Features'

ML.NET: Schema mismatch for feature column 'Features'

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

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

此代码:

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>

关于 "Fit"- 函数。

我已经对 GitHub 存储库进行了一些挖掘,但似乎找不到解决方案。我正在使用 Iris- 示例 (https://docs.microsoft.com/en-us/dotnet/machine-learning/tutorials/iris-clustering)(当然有我的修改)

有什么想法吗?

使用 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);