| File: Datasets\Iris.cs | Web Access |
| Project: src\test\Microsoft.ML.IntegrationTests\Microsoft.ML.IntegrationTests.csproj (Microsoft.ML.IntegrationTests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System; using Microsoft.ML.Data; namespace Microsoft.ML.IntegrationTests.Datasets { /// <summary> /// A class for the Iris test dataset. /// </summary> internal sealed class Iris { [LoadColumn(0)] public float Label { get; set; } [LoadColumn(1)] public float SepalLength { get; set; } [LoadColumn(2)] public float SepalWidth { get; set; } [LoadColumn(4)] public float PetalLength { get; set; } [LoadColumn(5)] public float PetalWidth { get; set; } /// <summary> /// The list of columns commonly used as features. /// </summary> public static readonly string[] Features = new string[] { "SepalLength", "SepalWidth", "PetalLength", "PetalWidth" }; public static IDataView LoadAsRankingProblem(MLContext mlContext, string filePath, bool hasHeader, char separatorChar, int seed = 1) { // Load the Iris data. var data = mlContext.Data.LoadFromTextFile<Iris>(filePath, hasHeader: hasHeader, separatorChar: separatorChar); // Create a function that generates a random groupId. var rng = new Random(seed); Action<Iris, IrisWithGroup> generateGroupId = (input, output) => { output.Label = input.Label; // The standard set used in tests has 150 rows output.GroupId = rng.Next(0, 30); output.PetalLength = input.PetalLength; output.PetalWidth = input.PetalWidth; output.SepalLength = input.SepalLength; output.SepalWidth = input.SepalWidth; }; // Describe a pipeline that generates a groupId and converts it to a key. var pipeline = mlContext.Transforms.CustomMapping(generateGroupId, null) .Append(mlContext.Transforms.Conversion.MapValueToKey("GroupId")); // Transform the data var transformedData = pipeline.Fit(data).Transform(data); return transformedData; } } /// <summary> /// A class for the Iris dataset with a GroupId column. /// </summary> internal sealed class IrisWithGroup { public float Label { get; set; } public int GroupId { get; set; } public float SepalLength { get; set; } public float SepalWidth { get; set; } public float PetalLength { get; set; } public float PetalWidth { get; set; } } /// <summary> /// A class for the Iris dataset with an extra float column. /// </summary> internal sealed class IrisWithOneExtraColumn { public float Label { get; set; } public float SepalLength { get; set; } public float SepalWidth { get; set; } public float PetalLength { get; set; } public float PetalWidth { get; set; } public float Float1 { get; set; } } /// <summary> /// A class for the Iris dataset with two extra float columns. /// </summary> internal sealed class IrisWithTwoExtraColumns { public float Label { get; set; } public float SepalLength { get; set; } public float SepalWidth { get; set; } public float PetalLength { get; set; } public float PetalWidth { get; set; } public float Float1 { get; set; } public float Float2 { get; set; } } }