Skip to content

Reformatting MulticlassClassification samples to width 85 #3942

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 45 commits into from
Jul 3, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
539a0f7
reformatted multiclassclassification samples
sierralee51 Jul 1, 2019
d18c419
fixing errors
sierralee51 Jul 1, 2019
0b4aff6
reformatted MulticlassClassification samples
sierralee51 Jul 1, 2019
f84939f
Update LbfgsMaximumEntropy.cs
sierralee51 Jul 1, 2019
130c6da
Update LbfgsMaximumEntropy.cs
sierralee51 Jul 1, 2019
71e4c19
Update LbfgsMaximumEntropyWithOptions.cs
sierralee51 Jul 1, 2019
8166627
Update LightGbmWithOptions.cs
sierralee51 Jul 1, 2019
5ea92f3
Update LbfgsMaximumEntropy.cs
sierralee51 Jul 1, 2019
b63c891
Update LightGbm.cs
sierralee51 Jul 1, 2019
4d37328
Update LightGbm.cs
sierralee51 Jul 1, 2019
6421a8b
Update LightGbmWithOptions.cs
sierralee51 Jul 1, 2019
79093c8
Update MulticlassClassification.ttinclude
sierralee51 Jul 1, 2019
4c2f723
Update MulticlassClassification.ttinclude
sierralee51 Jul 1, 2019
4a48dc5
Update NaiveBayes.cs
sierralee51 Jul 1, 2019
cc1b3f8
Update NaiveBayes.tt
sierralee51 Jul 1, 2019
c6d4cfd
Update NaiveBayes.tt
sierralee51 Jul 1, 2019
97b3c99
Update OneVersusAll.cs
sierralee51 Jul 1, 2019
6be7d8a
Update PairwiseCoupling.cs
sierralee51 Jul 1, 2019
3f74187
Update SdcaMaximumEntropy.cs
sierralee51 Jul 1, 2019
0d23ad8
Update SdcaMaximumEntropyWithOptions.cs
sierralee51 Jul 1, 2019
c728577
Update SdcaNonCalibrated.cs
sierralee51 Jul 1, 2019
6e82a10
Update SdcaNonCalibratedWithOptions.cs
sierralee51 Jul 1, 2019
1f1ff3b
Update SdcaNonCalibrated.cs
sierralee51 Jul 1, 2019
239e26a
Update SdcaNonCalibrated.cs
sierralee51 Jul 1, 2019
32db971
Update LbfgsMaximumEntropy.cs
sierralee51 Jul 1, 2019
e3e595b
Update LbfgsMaximumEntropy.cs
sierralee51 Jul 1, 2019
969af4d
Update LbfgsMaximumEntropyWithOptions.cs
sierralee51 Jul 1, 2019
b18c508
Update LightGbm.cs
sierralee51 Jul 1, 2019
1af1554
Update LightGbmWithOptions.cs
sierralee51 Jul 1, 2019
d0e1a01
Update MulticlassClassification.ttinclude
sierralee51 Jul 1, 2019
092808d
Update NaiveBayes.cs
sierralee51 Jul 1, 2019
e943230
Update OneVersusAll.cs
sierralee51 Jul 1, 2019
9d014e3
Update PairwiseCoupling.cs
sierralee51 Jul 1, 2019
407c4d8
Update SdcaMaximumEntropy.cs
sierralee51 Jul 1, 2019
b4c9575
Update SdcaMaximumEntropy.cs
sierralee51 Jul 1, 2019
053c85b
Update SdcaMaximumEntropyWithOptions.cs
sierralee51 Jul 1, 2019
0d2baa6
Update SdcaNonCalibrated.cs
sierralee51 Jul 1, 2019
6e410cc
Update SdcaNonCalibratedWithOptions.cs
sierralee51 Jul 1, 2019
278b743
Merge branch 'master' of https://github.com/dotnet/machinelearning in…
sierralee51 Jul 1, 2019
85ed0e6
fixed tabbing issue
sierralee51 Jul 2, 2019
f51c147
fixed indentations
sierralee51 Jul 2, 2019
1e9a3d8
aligned comments
sierralee51 Jul 2, 2019
c3d3499
fixed some indentation and spacing issues
sierralee51 Jul 2, 2019
e497794
fixed extra empty lines
sierralee51 Jul 2, 2019
6224ed5
fixed some more indentation issue
sierralee51 Jul 2, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,39 +10,48 @@ public static class LbfgsMaximumEntropy
{
public static void Example()
{
// Create a new context for ML.NET operations. It can be used for exception tracking and logging,
// as a catalog of available operations and as the source of randomness.
// Setting the seed to a fixed number in this example to make outputs deterministic.
// Create a new context for ML.NET operations. It can be used for
// exception tracking and logging, as a catalog of available operations
// and as the source of randomness. Setting the seed to a fixed number
// in this example to make outputs deterministic.
var mlContext = new MLContext(seed: 0);

// Create a list of training data points.
var dataPoints = GenerateRandomDataPoints(1000);

// Convert the list of data points to an IDataView object, which is consumable by ML.NET API.
// Convert the list of data points to an IDataView object, which is
// consumable by ML.NET API.
var trainingData = mlContext.Data.LoadFromEnumerable(dataPoints);

// Define the trainer.
var pipeline =
// Convert the string labels into key types.
mlContext.Transforms.Conversion.MapValueToKey(nameof(DataPoint.Label))
// Apply LbfgsMaximumEntropy multiclass trainer.
.Append(mlContext.MulticlassClassification.Trainers.LbfgsMaximumEntropy());
// Convert the string labels into key types.
mlContext.Transforms.Conversion
.MapValueToKey(nameof(DataPoint.Label))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 Line should be indented by 4 more spaces

// Apply LbfgsMaximumEntropy multiclass trainer.
.Append(mlContext.MulticlassClassification.Trainers
.LbfgsMaximumEntropy());
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Wrap the entire argument if possible (before mlContext)
  2. Indent this line an additional 4 spaces (8 total from current location)


// Train the model.
var model = pipeline.Fit(trainingData);

// Create testing data. Use different random seed to make it different from training data.
var testData = mlContext.Data.LoadFromEnumerable(GenerateRandomDataPoints(500, seed: 123));
// Create testing data. Use different random seed to make it different
// from training data.
var testData = mlContext.Data
.LoadFromEnumerable(GenerateRandomDataPoints(500, seed: 123));

// Run the model on test data set.
var transformedTestData = model.Transform(testData);

// Convert IDataView object to a list.
var predictions = mlContext.Data.CreateEnumerable<Prediction>(transformedTestData, reuseRowObject: false).ToList();
var predictions = mlContext.Data
.CreateEnumerable<Prediction>(transformedTestData,
reuseRowObject: false).ToList();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 This is difficult to read. See preferred form in #3941 (comment)


// Look at 5 predictions
foreach (var p in predictions.Take(5))
Console.WriteLine($"Label: {p.Label}, Prediction: {p.PredictedLabel}");
Console.WriteLine($"Label: {p.Label}, " +
$"Prediction: {p.PredictedLabel}");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 Multi-line body of foreach needs braces


// Expected output:
// Label: 1, Prediction: 1
Expand All @@ -52,7 +61,9 @@ public static void Example()
// Label: 3, Prediction: 3

// Evaluate the overall metrics
var metrics = mlContext.MulticlassClassification.Evaluate(transformedTestData);
var metrics = mlContext.MulticlassClassification
.Evaluate(transformedTestData);

PrintMetrics(metrics);

// Expected output:
Expand All @@ -72,8 +83,11 @@ public static void Example()
// Precision ||0.9308 |0.9593 |0.8580 |
}

// Generates random uniform doubles in [-0.5, 0.5) range with labels 1, 2 or 3.
private static IEnumerable<DataPoint> GenerateRandomDataPoints(int count, int seed=0)
// Generates random uniform doubles in [-0.5, 0.5)
// range with labels 1, 2 or 3.
private static IEnumerable<DataPoint> GenerateRandomDataPoints(int count,
int seed=0)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 Wrap no arguments, or wrap all arguments with one argument per line


{
var random = new Random(seed);
float randomFloat() => (float)(random.NextDouble() - 0.5);
Expand All @@ -85,13 +99,17 @@ private static IEnumerable<DataPoint> GenerateRandomDataPoints(int count, int se
{
Label = (uint)label,
// Create random features that are correlated with the label.
// The feature values are slightly increased by adding a constant multiple of label.
Features = Enumerable.Repeat(label, 20).Select(x => randomFloat() + label * 0.2f).ToArray()
// The feature values are slightly increased by adding a
// constant multiple of label.
Features = Enumerable.Repeat(label, 20)
.Select(x => randomFloat() + label * 0.2f).ToArray()

};
}
}

// Example with label and 20 feature values. A data set is a collection of such examples.
// Example with label and 20 feature values. A data set is a collection of
// such examples.
private class DataPoint
{
public uint Label { get; set; }
Expand All @@ -114,8 +132,11 @@ public static void PrintMetrics(MulticlassClassificationMetrics metrics)
Console.WriteLine($"Micro Accuracy: {metrics.MicroAccuracy:F2}");
Console.WriteLine($"Macro Accuracy: {metrics.MacroAccuracy:F2}");
Console.WriteLine($"Log Loss: {metrics.LogLoss:F2}");
Console.WriteLine($"Log Loss Reduction: {metrics.LogLossReduction:F2}\n");
Console.WriteLine(
$"Log Loss Reduction: {metrics.LogLossReduction:F2}\n");

Console.WriteLine(metrics.ConfusionMatrix.GetFormattedConfusionTable());
}
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ string TrainerOptions = null;
string OptionsInclude = "";
string Comments = "";
bool CacheData = false;
string DataGenerationComments= "// Generates random uniform doubles in [-0.5, 0.5) range with labels 1, 2 or 3.";
string DataGenerationComments= "// Generates random uniform doubles in [-0.5, 0.5)"
+ "\n // range with labels 1, 2 or 3.";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 Place \n at the end of the preceding line


string ExpectedOutputPerInstance = @"// Expected output:
// Label: 1, Prediction: 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,17 @@ public static class LbfgsMaximumEntropyWithOptions
{
public static void Example()
{
// Create a new context for ML.NET operations. It can be used for exception tracking and logging,
// as a catalog of available operations and as the source of randomness.
// Setting the seed to a fixed number in this example to make outputs deterministic.
// Create a new context for ML.NET operations. It can be used for
// exception tracking and logging, as a catalog of available operations
// and as the source of randomness. Setting the seed to a fixed number
// in this example to make outputs deterministic.
var mlContext = new MLContext(seed: 0);

// Create a list of training data points.
var dataPoints = GenerateRandomDataPoints(1000);

// Convert the list of data points to an IDataView object, which is consumable by ML.NET API.
// Convert the list of data points to an IDataView object, which is
// consumable by ML.NET API.
var trainingData = mlContext.Data.LoadFromEnumerable(dataPoints);

// Define trainer options.
Expand All @@ -32,27 +34,32 @@ public static void Example()

// Define the trainer.
var pipeline =
// Convert the string labels into key types.
mlContext.Transforms.Conversion.MapValueToKey("Label")
// Apply LbfgsMaximumEntropy multiclass trainer.
.Append(mlContext.MulticlassClassification.Trainers.LbfgsMaximumEntropy(options));
// Convert the string labels into key types.
mlContext.Transforms.Conversion.MapValueToKey("Label")
// Apply LbfgsMaximumEntropy multiclass trainer.
.Append(mlContext.MulticlassClassification.Trainers
.LbfgsMaximumEntropy(options));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 See earlier comment regarding this wrapping


// Train the model.
var model = pipeline.Fit(trainingData);

// Create testing data. Use different random seed to make it different from training data.
var testData = mlContext.Data.LoadFromEnumerable(GenerateRandomDataPoints(500, seed: 123));
// Create testing data. Use different random seed to make it different
// from training data.
var testData = mlContext.Data
.LoadFromEnumerable(GenerateRandomDataPoints(500, seed: 123));

// Run the model on test data set.
var transformedTestData = model.Transform(testData);

// Convert IDataView object to a list.
var predictions = mlContext.Data.CreateEnumerable<Prediction>(transformedTestData, reuseRowObject: false).ToList();
var predictions = mlContext.Data
.CreateEnumerable<Prediction>(transformedTestData,
reuseRowObject: false).ToList();

// Look at 5 predictions
foreach (var p in predictions.Take(5))
Console.WriteLine($"Label: {p.Label}, Prediction: {p.PredictedLabel}");
Console.WriteLine($"Label: {p.Label}, " +
$"Prediction: {p.PredictedLabel}");

// Expected output:
// Label: 1, Prediction: 1
Expand All @@ -62,7 +69,9 @@ public static void Example()
// Label: 3, Prediction: 3

// Evaluate the overall metrics
var metrics = mlContext.MulticlassClassification.Evaluate(transformedTestData);
var metrics = mlContext.MulticlassClassification
.Evaluate(transformedTestData);

PrintMetrics(metrics);

// Expected output:
Expand All @@ -82,8 +91,11 @@ public static void Example()
// Precision ||0.9304 |0.9593 |0.8529 |
}

// Generates random uniform doubles in [-0.5, 0.5) range with labels 1, 2 or 3.
private static IEnumerable<DataPoint> GenerateRandomDataPoints(int count, int seed=0)
// Generates random uniform doubles in [-0.5, 0.5)
// range with labels 1, 2 or 3.
private static IEnumerable<DataPoint> GenerateRandomDataPoints(int count,
int seed=0)

{
var random = new Random(seed);
float randomFloat() => (float)(random.NextDouble() - 0.5);
Expand All @@ -95,13 +107,17 @@ private static IEnumerable<DataPoint> GenerateRandomDataPoints(int count, int se
{
Label = (uint)label,
// Create random features that are correlated with the label.
// The feature values are slightly increased by adding a constant multiple of label.
Features = Enumerable.Repeat(label, 20).Select(x => randomFloat() + label * 0.2f).ToArray()
// The feature values are slightly increased by adding a
// constant multiple of label.
Features = Enumerable.Repeat(label, 20)
.Select(x => randomFloat() + label * 0.2f).ToArray()

};
}
}

// Example with label and 20 feature values. A data set is a collection of such examples.
// Example with label and 20 feature values. A data set is a collection of
// such examples.
private class DataPoint
{
public uint Label { get; set; }
Expand All @@ -124,8 +140,11 @@ public static void PrintMetrics(MulticlassClassificationMetrics metrics)
Console.WriteLine($"Micro Accuracy: {metrics.MicroAccuracy:F2}");
Console.WriteLine($"Macro Accuracy: {metrics.MacroAccuracy:F2}");
Console.WriteLine($"Log Loss: {metrics.LogLoss:F2}");
Console.WriteLine($"Log Loss Reduction: {metrics.LogLossReduction:F2}\n");
Console.WriteLine(
$"Log Loss Reduction: {metrics.LogLossReduction:F2}\n");

Console.WriteLine(metrics.ConfusionMatrix.GetFormattedConfusionTable());
}
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ string TrainerOptions = @"LbfgsMaximumEntropyMulticlassTrainer.Options

string OptionsInclude = "using Microsoft.ML.Trainers;";
string Comments = "";
string DataGenerationComments= "// Generates random uniform doubles in [-0.5, 0.5) range with labels 1, 2 or 3.";
string DataGenerationComments= "// Generates random uniform doubles in [-0.5, 0.5)"
+ "\n // range with labels 1, 2 or 3.";
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe indent the comment "// range with labels . . ." with the same indent as the comment above it "Generates random . . . " ? There are more instances of this, so I guess there's a tt file you'd have to change.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That isn't a comment. It's part of the string


bool CacheData = false;

string ExpectedOutputPerInstance = @"// Expected output:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,43 +8,53 @@ namespace Samples.Dynamic.Trainers.MulticlassClassification
{
public static class LightGbm
{
// This example requires installation of additional NuGet package
// <a href="https://www.nuget.org/packages/Microsoft.ML.FastTree/">Microsoft.ML.FastTree</a>.
// This example requires installation of additional NuGet package for
// Microsoft.ML.FastTree at
// https://www.nuget.org/packages/Microsoft.ML.FastTree/
public static void Example()
{
// Create a new context for ML.NET operations. It can be used for exception tracking and logging,
// as a catalog of available operations and as the source of randomness.
// Setting the seed to a fixed number in this example to make outputs deterministic.
// Create a new context for ML.NET operations. It can be used for
// exception tracking and logging, as a catalog of available operations
// and as the source of randomness. Setting the seed to a fixed number
// in this example to make outputs deterministic.
var mlContext = new MLContext(seed: 0);

// Create a list of training data points.
var dataPoints = GenerateRandomDataPoints(1000);

// Convert the list of data points to an IDataView object, which is consumable by ML.NET API.
// Convert the list of data points to an IDataView object, which is
// consumable by ML.NET API.
var trainingData = mlContext.Data.LoadFromEnumerable(dataPoints);

// Define the trainer.
var pipeline =
// Convert the string labels into key types.
mlContext.Transforms.Conversion.MapValueToKey(nameof(DataPoint.Label))
// Apply LightGbm multiclass trainer.
.Append(mlContext.MulticlassClassification.Trainers.LightGbm());
// Convert the string labels into key types.
mlContext.Transforms.Conversion
.MapValueToKey(nameof(DataPoint.Label))
// Apply LightGbm multiclass trainer.
.Append(mlContext.MulticlassClassification.Trainers
.LightGbm());

// Train the model.
var model = pipeline.Fit(trainingData);

// Create testing data. Use different random seed to make it different from training data.
var testData = mlContext.Data.LoadFromEnumerable(GenerateRandomDataPoints(500, seed: 123));
// Create testing data. Use different random seed to make it different
// from training data.
var testData = mlContext.Data
.LoadFromEnumerable(GenerateRandomDataPoints(500, seed: 123));

// Run the model on test data set.
var transformedTestData = model.Transform(testData);

// Convert IDataView object to a list.
var predictions = mlContext.Data.CreateEnumerable<Prediction>(transformedTestData, reuseRowObject: false).ToList();
var predictions = mlContext.Data
.CreateEnumerable<Prediction>(transformedTestData,
reuseRowObject: false).ToList();

// Look at 5 predictions
foreach (var p in predictions.Take(5))
Console.WriteLine($"Label: {p.Label}, Prediction: {p.PredictedLabel}");
Console.WriteLine($"Label: {p.Label}, " +
$"Prediction: {p.PredictedLabel}");

// Expected output:
// Label: 1, Prediction: 1
Expand All @@ -54,7 +64,9 @@ public static void Example()
// Label: 3, Prediction: 3

// Evaluate the overall metrics
var metrics = mlContext.MulticlassClassification.Evaluate(transformedTestData);
var metrics = mlContext.MulticlassClassification
.Evaluate(transformedTestData);

PrintMetrics(metrics);

// Expected output:
Expand All @@ -74,8 +86,11 @@ public static void Example()
// Precision ||0.9936 |1.0000 |0.9701 |
}

// Generates random uniform doubles in [-0.5, 0.5) range with labels 1, 2 or 3.
private static IEnumerable<DataPoint> GenerateRandomDataPoints(int count, int seed=0)
// Generates random uniform doubles in [-0.5, 0.5)
// range with labels 1, 2 or 3.
private static IEnumerable<DataPoint> GenerateRandomDataPoints(int count,
int seed=0)

{
var random = new Random(seed);
float randomFloat() => (float)(random.NextDouble() - 0.5);
Expand All @@ -87,13 +102,17 @@ private static IEnumerable<DataPoint> GenerateRandomDataPoints(int count, int se
{
Label = (uint)label,
// Create random features that are correlated with the label.
// The feature values are slightly increased by adding a constant multiple of label.
Features = Enumerable.Repeat(label, 20).Select(x => randomFloat() + label * 0.2f).ToArray()
// The feature values are slightly increased by adding a
// constant multiple of label.
Features = Enumerable.Repeat(label, 20)
.Select(x => randomFloat() + label * 0.2f).ToArray()

};
}
}

// Example with label and 20 feature values. A data set is a collection of such examples.
// Example with label and 20 feature values. A data set is a collection of
// such examples.
private class DataPoint
{
public uint Label { get; set; }
Expand All @@ -116,8 +135,11 @@ public static void PrintMetrics(MulticlassClassificationMetrics metrics)
Console.WriteLine($"Micro Accuracy: {metrics.MicroAccuracy:F2}");
Console.WriteLine($"Macro Accuracy: {metrics.MacroAccuracy:F2}");
Console.WriteLine($"Log Loss: {metrics.LogLoss:F2}");
Console.WriteLine($"Log Loss Reduction: {metrics.LogLossReduction:F2}\n");
Console.WriteLine(
$"Log Loss Reduction: {metrics.LogLossReduction:F2}\n");

Console.WriteLine(metrics.ConfusionMatrix.GetFormattedConfusionTable());
}
}
}

Loading