【问题标题】:ML .net reading in tab seperated data setML .net 读取制表符分隔的数据集
【发布时间】:2018-12-28 17:00:45
【问题描述】:

这是我第一次使用 ML.net 0.8,我在数据集中加载时遇到了麻烦。

var mlContext = new MLContext();

        String dataPath = "ML Data 3.txt";
        var trainingDataView = mlContext.Data.ReadFromTextFile(
            columns: new TextLoader.Column[]
            {
                new TextLoader.Column("Product", DataKind.Text,0),
                new TextLoader.Column("Streat", DataKind.R4, 1),
                new TextLoader.Column("Overspray", DataKind.R4,2),
                new TextLoader.Column("MLS",DataKind.R4,3),
                new TextLoader.Column("Moisture",DataKind.R4,4)
            }, path: dataPath );


        var data = trainingDataView.Preview();

        var pipeline = mlContext.Transforms.Concatenate("Features", "Product", "Streat", "Overspray", "MLS")
            .Append(mlContext.MulticlassClassification.Trainers.StochasticDualCoordinateAscent(labelColumn: "Moisture", featureColumn: "Features"))
            .Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedMoisture"));


        var model = pipeline.Fit(trainingDataView);

数据预览看起来不错,但是当它尝试拟合以执行拟合操作时,我收到以下错误:

System.InvalidOperationException: 'Column 'Streat' 的值为 R4,这与之前观察到的 Text 类型不同。'

我检查了数据,数据文件中没有文本元素,除了产品列。

任何建议都非常受欢迎。

【问题讨论】:

    标签: .net ml.net


    【解决方案1】:

    MulticlassClassification 算法不适用于文本功能,只能用于数字。如果Product 是某种标识符,则最好将其从Concatenate 调用中排除,因为它不是功能:

    mlContext.Transforms.Concatenate("Features", "Streat", "Overspray", "MLS")
    

    如果它是某种类别并且应该用作特征,您可以使用其中一种转换将其转换为数字,例如OneHotEncoding

    var pipeline = mlContext.Transforms.Categorical.OneHotEncoding("Product")
            .Append(mlContext.Transforms.Concatenate("Features", "Product", "Streat", "Overspray", "MLS"))
            .Append(mlContext.MulticlassClassification.Trainers.StochasticDualCoordinateAscent(labelColumn: "Moisture", featureColumn: "Features"))
            .Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedMoisture"));
    

    【讨论】:

    • 感谢 Random,我在发布后不久就意识到了我的错误。将我的模型更改为使用回归算法,并解决了上述错误消息。
    猜你喜欢
    • 1970-01-01
    • 2017-03-06
    • 2012-12-01
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    相关资源
    最近更新 更多