Conversion catalog samples - #3167

Merged
sfilipi merged 3 commits into
dotnet:masterfrom
sfilipi:conversionSamples
Apr 4, 2019
Merged

Conversion catalog samples#3167
sfilipi merged 3 commits into
dotnet:masterfrom
sfilipi:conversionSamples

Conversation

@sfilipi

Copy link
Copy Markdown
Member

Towards #1209
Adding and adjusting samples for the Conversions catalog.

@sfilipi
sfilipi requested review from singlis and zeahmedApril 2, 2019 06:26
@sfilipisfilipi self-assigned this Apr 2, 2019
@sfilipisfilipi added the documentation Related to documentation of ML.NET label Apr 2, 2019
@codecov

codecovBot commented Apr 2, 2019

Copy link
Copy Markdown

Codecov Report

Merging #3167 into master will decrease coverage by <.01%.
The diff coverage is n/a.

@@ Coverage Diff @@## master #3167 +/- ##
==========================================
- Coverage 72.54% 72.53% -0.01% 
==========================================
Files 807 807 Lines 144774 144774 Branches 16208 16208 ==========================================
- Hits 105022 105011 -11 - Misses 35338 35348 +10 - Partials 4414 4415 +1
FlagCoverage Δ
#Debug72.53% <ø> (-0.01%)⬇️
#production68.12% <ø> (-0.01%)⬇️
#test88.82% <ø> (-0.01%)⬇️
Impacted FilesCoverage Δ
...ML.Data/Transforms/ConversionsExtensionsCatalog.cs44.87% <ø> (ø)⬆️
...c/Microsoft.ML.FastTree/Utils/ThreadTaskManager.cs79.48% <0%> (-20.52%)⬇️
...soft.ML.TestFramework/DataPipe/TestDataPipeBase.cs73.7% <0%> (-0.34%)⬇️


public uint Label { get; set; }
}

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

3 empty lines? #Resolved

public static class ConvertTypeMultiColumn
{
// The initial data type
private class InputData

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Other places we have C# structures defined after the actual example function. #Resolved

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

i like that! focus should be on the example.


In reply to: 271401627 [](ancestors = 271401627)

{
public float Converted1 { get; set; }
public float Converted2 { get; set; }

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Do we want to remove this empty line? #Resolved

new InputOutputColumnPair("Converted3", "Feature3"),
new InputOutputColumnPair("Converted4", "Feature4"),

}, DataKind.Single);

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

{ is not aligned with }. #Resolved

new InputOutputColumnPair("Converted2", "Feature2"),
new InputOutputColumnPair("Converted3", "Feature3"),
new InputOutputColumnPair("Converted4", "Feature4"),

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please remove this empty line. #Resolved


}, DataKind.Single);

// Let's train our pipeline, and then apply it to the same data.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please add more detailed description about what this pipeline is doing. For example, input column A will be converted to output column B. #Pending

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I am not adding too many details, because it is hard to maintain as stale names in the comments don't get flagged by anything.


In reply to: 271402918 [](ancestors = 271402918)

{
public static class MapValue
{
class DataPoint

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
class DataPoint
privateclass DataPoint
``` #Resolved

public int Score { get; set; }
}

class TransformedData : DataPoint

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
classTransformedData:DataPoint
privateclassTransformedDataPoint:DataPoint
``` #Resolved



/// This example demonstrates the use of the ValueMappingEstimator by mapping strings to other string values, or floats to strings.
/// This is useful to map types to a grouping.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

What does This is useful to map types to a grouping. mean? #Resolved

new DataPoint() { Timeframe = "12-25yrs" , Score = 3 },
new DataPoint() { Timeframe = "0-5yrs" , Score = 4 },
new DataPoint() { Timeframe = "12-25yrs" , Score = 5 },
new DataPoint() { Timeframe = "25+yrs" , Score = 5 },

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
newDataPoint(){Timeframe="25+yrs",Score=5},
newDataPoint(){Timeframe="25+yrs",Score=5},
``` #Resolved


/// This example demonstrates the use of the ValueMappingEstimator by mapping strings to other string values, or floats to strings.
/// This is useful to map types to a grouping.
/// It is possible to have multiple values map to the same category.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This sentence is not very clear to me. #Resolved

namespace Microsoft.ML.Samples.Dynamic
{
// This example illustrates how to convert multiple columns of different types to one type, in this case System.Single.
// This is often a useful data transformation before concatenting the features together and passing them to a particular estimator.

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

concatenting [](start = 57, length = 12)

typo. #Closed


public static void Example()
{
var mlContext = new MLContext(seed: 1);

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

var mlContext = new MLContext(seed: 1); [](start = 12, length = 39)

I see missing comments overall in this sample which we usually have in other samples e.g. comments above the MLContext etc. #Closed

// TransformedData obtained post-transformation.
//
// Timeframe TimeframeCategory Label Score ScoreCategory
// 0 - 4yrs Short 1 1 Low

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 - 4 [](start = 15, length = 5)

There should not be spaces between hyphen here. #Closed


// Create the lookup map data IEnumerable.
var lookupData = new[] {
new LookupMap { Value = 3.14f, Category = "Low" },

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Value = 3.14f, Category = "Low" [](start = 32, length = 31)

is it intentional that order of Value and Category differ from the rest? #Closed

// Convert to IDataView
var lookupIdvMap = mlContext.Data.LoadFromEnumerable(lookupData);

// Constructs the ValueMappingEstimator making the ML.net pipeline

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ML.net [](start = 63, length = 6)

I think we advertise it as ML.NET not ML.net, right? #Closed

foreach (var featureRow in features)
Console.WriteLine($"{featureRow.Price}\t\t{featureRow.PriceCategory}");

// TransformedData obtained post-transformation.

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

// TransformedData obtained post-transformation. [](start = 12, length = 48)

Everywhere else this is "// Expected output:" #Closed

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I think this is fine too, it matches the name of the type.


In reply to: 271420199 [](ancestors = 271420199)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ok.


In reply to: 271466196 [](ancestors = 271466196,271420199)

}

// Timeframe Feature
// 0 - 4yrs 0, 5, 300

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 - 4yrs [](start = 15, length = 8)

No spaces between hyphen here. #Closed


class TransformedData : DataPoint
{
public int[] Feature { get; set; }

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Feature [](start = 25, length = 7)

Should be 'Features" as you mentioned this as Features Column in the comments below, right? #Closed

/// <format type="text/markdown">
/// <![CDATA[
/// [!code-csharp[KeyToValueMappingEstimator](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/ValueMappingStringToKeyType.cs)]
/// [!code-csharp[KeyToValueMappingEstimator](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/ValueMappingStringToKeyType.cs)]

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

KeyToValueMappingEstimator [](start = 27, length = 26)

It should be the name of the extension method e.g. MapKeyToValue. Can you please also check this inconsistency in the rest of the file? #Closed

}

// The resulting data type after the transformation
private sealed class TransformedData : InputData

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

sealed [](start = 16, length = 6)

we don't need to worry about sealed. it might give the wrong impression that the data classes should be sealed.

I added this note to the checklist #Resolved

public string Feature2;
public DateTime Feature3;
public double Feature4;
}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

please move the data classes below example as discussed in the group (i also added this note to the checklist) #Resolved

new DataPoint() { Price = 1.19f },
new DataPoint() { Price = 2.17f },
new DataPoint() { Price = 33.784f },

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

extra line #Resolved

public string Category { get; set; }

}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

extra line #Resolved


namespace Microsoft.ML.Samples.Dynamic
{
public static class MapValueIdvLookup

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

MapValueIdvLookup [](start = 24, length = 17)

Let's change the filename to say Idv instead of IDV #Resolved

// 0 23 6.368921E+17 0.1206
// 1 8904 6.368924E+17 8.09

}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

i see a lot of extra empty lines. please have a second pass and remove them. #Resolved

@zeahmedzeahmed left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

:shipit:

// A: False Aconv:0
// A: False Aconv:0
}
private class InputData

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

pr [](start = 7, length = 3)

need extra line here

{
public bool Survived;
}
private sealed class TransformedData : InputData

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

pr [](start = 8, length = 2)

ditto

@shmoradimsshmoradims left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

:shipit:

@sfilipi
sfilipi merged commit e285889 into dotnet:masterApr 4, 2019
@sfilipi
sfilipi deleted the conversionSamples branch April 4, 2019 16:49
sfilipi added a commit to sfilipi/machinelearning-1 that referenced this pull request Apr 9, 2019
* adding a sample for convert MultiColumns. Moving files around.
* Adjust the samples about ValueMapping
* Addressing PR comments
@ghostghost locked as resolved and limited conversation to collaborators Mar 23, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

documentationRelated to documentation of ML.NET

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@sfilipi@wschin@shmoradims@zeahmed
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Conversion catalog samples - #3167

Merged
sfilipi merged 3 commits into
dotnet:masterfrom
sfilipi:conversionSamples
Apr 4, 2019
Merged

Conversion catalog samples#3167
sfilipi merged 3 commits into
dotnet:masterfrom
sfilipi:conversionSamples

Conversation

@sfilipi

Copy link
Copy Markdown
Member

Towards #1209
Adding and adjusting samples for the Conversions catalog.

@sfilipi
sfilipi requested review from singlis and zeahmedApril 2, 2019 06:26
@sfilipisfilipi self-assigned this Apr 2, 2019
@sfilipisfilipi added the documentation Related to documentation of ML.NET label Apr 2, 2019
@codecov

codecovBot commented Apr 2, 2019

Copy link
Copy Markdown

Codecov Report

Merging #3167 into master will decrease coverage by <.01%.
The diff coverage is n/a.

@@ Coverage Diff @@## master #3167 +/- ##
==========================================
- Coverage 72.54% 72.53% -0.01% 
==========================================
Files 807 807 Lines 144774 144774 Branches 16208 16208 ==========================================
- Hits 105022 105011 -11 - Misses 35338 35348 +10 - Partials 4414 4415 +1
FlagCoverage Δ
#Debug72.53% <ø> (-0.01%)⬇️
#production68.12% <ø> (-0.01%)⬇️
#test88.82% <ø> (-0.01%)⬇️
Impacted FilesCoverage Δ
...ML.Data/Transforms/ConversionsExtensionsCatalog.cs44.87% <ø> (ø)⬆️
...c/Microsoft.ML.FastTree/Utils/ThreadTaskManager.cs79.48% <0%> (-20.52%)⬇️
...soft.ML.TestFramework/DataPipe/TestDataPipeBase.cs73.7% <0%> (-0.34%)⬇️


public uint Label { get; set; }
}

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

3 empty lines? #Resolved

public static class ConvertTypeMultiColumn
{
// The initial data type
private class InputData

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Other places we have C# structures defined after the actual example function. #Resolved

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

i like that! focus should be on the example.


In reply to: 271401627 [](ancestors = 271401627)

{
public float Converted1 { get; set; }
public float Converted2 { get; set; }

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Do we want to remove this empty line? #Resolved

new InputOutputColumnPair("Converted3", "Feature3"),
new InputOutputColumnPair("Converted4", "Feature4"),

}, DataKind.Single);

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

{ is not aligned with }. #Resolved

new InputOutputColumnPair("Converted2", "Feature2"),
new InputOutputColumnPair("Converted3", "Feature3"),
new InputOutputColumnPair("Converted4", "Feature4"),

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please remove this empty line. #Resolved


}, DataKind.Single);

// Let's train our pipeline, and then apply it to the same data.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please add more detailed description about what this pipeline is doing. For example, input column A will be converted to output column B. #Pending

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I am not adding too many details, because it is hard to maintain as stale names in the comments don't get flagged by anything.


In reply to: 271402918 [](ancestors = 271402918)

{
public static class MapValue
{
class DataPoint

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
class DataPoint
privateclass DataPoint
``` #Resolved

public int Score { get; set; }
}

class TransformedData : DataPoint

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
classTransformedData:DataPoint
privateclassTransformedDataPoint:DataPoint
``` #Resolved



/// This example demonstrates the use of the ValueMappingEstimator by mapping strings to other string values, or floats to strings.
/// This is useful to map types to a grouping.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

What does This is useful to map types to a grouping. mean? #Resolved

new DataPoint() { Timeframe = "12-25yrs" , Score = 3 },
new DataPoint() { Timeframe = "0-5yrs" , Score = 4 },
new DataPoint() { Timeframe = "12-25yrs" , Score = 5 },
new DataPoint() { Timeframe = "25+yrs" , Score = 5 },

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
newDataPoint(){Timeframe="25+yrs",Score=5},
newDataPoint(){Timeframe="25+yrs",Score=5},
``` #Resolved


/// This example demonstrates the use of the ValueMappingEstimator by mapping strings to other string values, or floats to strings.
/// This is useful to map types to a grouping.
/// It is possible to have multiple values map to the same category.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This sentence is not very clear to me. #Resolved

namespace Microsoft.ML.Samples.Dynamic
{
// This example illustrates how to convert multiple columns of different types to one type, in this case System.Single.
// This is often a useful data transformation before concatenting the features together and passing them to a particular estimator.

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

concatenting [](start = 57, length = 12)

typo. #Closed


public static void Example()
{
var mlContext = new MLContext(seed: 1);

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

var mlContext = new MLContext(seed: 1); [](start = 12, length = 39)

I see missing comments overall in this sample which we usually have in other samples e.g. comments above the MLContext etc. #Closed

// TransformedData obtained post-transformation.
//
// Timeframe TimeframeCategory Label Score ScoreCategory
// 0 - 4yrs Short 1 1 Low

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 - 4 [](start = 15, length = 5)

There should not be spaces between hyphen here. #Closed


// Create the lookup map data IEnumerable.
var lookupData = new[] {
new LookupMap { Value = 3.14f, Category = "Low" },

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Value = 3.14f, Category = "Low" [](start = 32, length = 31)

is it intentional that order of Value and Category differ from the rest? #Closed

// Convert to IDataView
var lookupIdvMap = mlContext.Data.LoadFromEnumerable(lookupData);

// Constructs the ValueMappingEstimator making the ML.net pipeline

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ML.net [](start = 63, length = 6)

I think we advertise it as ML.NET not ML.net, right? #Closed

foreach (var featureRow in features)
Console.WriteLine($"{featureRow.Price}\t\t{featureRow.PriceCategory}");

// TransformedData obtained post-transformation.

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

// TransformedData obtained post-transformation. [](start = 12, length = 48)

Everywhere else this is "// Expected output:" #Closed

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I think this is fine too, it matches the name of the type.


In reply to: 271420199 [](ancestors = 271420199)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ok.


In reply to: 271466196 [](ancestors = 271466196,271420199)

}

// Timeframe Feature
// 0 - 4yrs 0, 5, 300

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 - 4yrs [](start = 15, length = 8)

No spaces between hyphen here. #Closed


class TransformedData : DataPoint
{
public int[] Feature { get; set; }

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Feature [](start = 25, length = 7)

Should be 'Features" as you mentioned this as Features Column in the comments below, right? #Closed

/// <format type="text/markdown">
/// <![CDATA[
/// [!code-csharp[KeyToValueMappingEstimator](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/ValueMappingStringToKeyType.cs)]
/// [!code-csharp[KeyToValueMappingEstimator](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/ValueMappingStringToKeyType.cs)]

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

KeyToValueMappingEstimator [](start = 27, length = 26)

It should be the name of the extension method e.g. MapKeyToValue. Can you please also check this inconsistency in the rest of the file? #Closed

}

// The resulting data type after the transformation
private sealed class TransformedData : InputData

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

sealed [](start = 16, length = 6)

we don't need to worry about sealed. it might give the wrong impression that the data classes should be sealed.

I added this note to the checklist #Resolved

public string Feature2;
public DateTime Feature3;
public double Feature4;
}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

please move the data classes below example as discussed in the group (i also added this note to the checklist) #Resolved

new DataPoint() { Price = 1.19f },
new DataPoint() { Price = 2.17f },
new DataPoint() { Price = 33.784f },

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

extra line #Resolved

public string Category { get; set; }

}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

extra line #Resolved


namespace Microsoft.ML.Samples.Dynamic
{
public static class MapValueIdvLookup

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

MapValueIdvLookup [](start = 24, length = 17)

Let's change the filename to say Idv instead of IDV #Resolved

// 0 23 6.368921E+17 0.1206
// 1 8904 6.368924E+17 8.09

}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

i see a lot of extra empty lines. please have a second pass and remove them. #Resolved

@zeahmedzeahmed left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

:shipit:

// A: False Aconv:0
// A: False Aconv:0
}
private class InputData

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

pr [](start = 7, length = 3)

need extra line here

{
public bool Survived;
}
private sealed class TransformedData : InputData

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

pr [](start = 8, length = 2)

ditto

@shmoradimsshmoradims left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

:shipit:

@sfilipi
sfilipi merged commit e285889 into dotnet:masterApr 4, 2019
@sfilipi
sfilipi deleted the conversionSamples branch April 4, 2019 16:49
sfilipi added a commit to sfilipi/machinelearning-1 that referenced this pull request Apr 9, 2019
* adding a sample for convert MultiColumns. Moving files around.
* Adjust the samples about ValueMapping
* Addressing PR comments
@ghostghost locked as resolved and limited conversation to collaborators Mar 23, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

documentationRelated to documentation of ML.NET

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@sfilipi@wschin@shmoradims@zeahmed
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Conversion catalog samples - #3167

Merged
sfilipi merged 3 commits into
dotnet:masterfrom
sfilipi:conversionSamples
Apr 4, 2019
Merged

Conversion catalog samples#3167
sfilipi merged 3 commits into
dotnet:masterfrom
sfilipi:conversionSamples

Conversation

@sfilipi

Copy link
Copy Markdown
Member

Towards #1209
Adding and adjusting samples for the Conversions catalog.

@sfilipi
sfilipi requested review from singlis and zeahmedApril 2, 2019 06:26
@sfilipisfilipi self-assigned this Apr 2, 2019
@sfilipisfilipi added the documentation Related to documentation of ML.NET label Apr 2, 2019
@codecov

codecovBot commented Apr 2, 2019

Copy link
Copy Markdown

Codecov Report

Merging #3167 into master will decrease coverage by <.01%.
The diff coverage is n/a.

@@ Coverage Diff @@## master #3167 +/- ##
==========================================
- Coverage 72.54% 72.53% -0.01% 
==========================================
Files 807 807 Lines 144774 144774 Branches 16208 16208 ==========================================
- Hits 105022 105011 -11 - Misses 35338 35348 +10 - Partials 4414 4415 +1
FlagCoverage Δ
#Debug72.53% <ø> (-0.01%)⬇️
#production68.12% <ø> (-0.01%)⬇️
#test88.82% <ø> (-0.01%)⬇️
Impacted FilesCoverage Δ
...ML.Data/Transforms/ConversionsExtensionsCatalog.cs44.87% <ø> (ø)⬆️
...c/Microsoft.ML.FastTree/Utils/ThreadTaskManager.cs79.48% <0%> (-20.52%)⬇️
...soft.ML.TestFramework/DataPipe/TestDataPipeBase.cs73.7% <0%> (-0.34%)⬇️


public uint Label { get; set; }
}

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

3 empty lines? #Resolved

public static class ConvertTypeMultiColumn
{
// The initial data type
private class InputData

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Other places we have C# structures defined after the actual example function. #Resolved

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

i like that! focus should be on the example.


In reply to: 271401627 [](ancestors = 271401627)

{
public float Converted1 { get; set; }
public float Converted2 { get; set; }

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Do we want to remove this empty line? #Resolved

new InputOutputColumnPair("Converted3", "Feature3"),
new InputOutputColumnPair("Converted4", "Feature4"),

}, DataKind.Single);

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

{ is not aligned with }. #Resolved

new InputOutputColumnPair("Converted2", "Feature2"),
new InputOutputColumnPair("Converted3", "Feature3"),
new InputOutputColumnPair("Converted4", "Feature4"),

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please remove this empty line. #Resolved


}, DataKind.Single);

// Let's train our pipeline, and then apply it to the same data.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please add more detailed description about what this pipeline is doing. For example, input column A will be converted to output column B. #Pending

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I am not adding too many details, because it is hard to maintain as stale names in the comments don't get flagged by anything.


In reply to: 271402918 [](ancestors = 271402918)

{
public static class MapValue
{
class DataPoint

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
class DataPoint
privateclass DataPoint
``` #Resolved

public int Score { get; set; }
}

class TransformedData : DataPoint

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
classTransformedData:DataPoint
privateclassTransformedDataPoint:DataPoint
``` #Resolved



/// This example demonstrates the use of the ValueMappingEstimator by mapping strings to other string values, or floats to strings.
/// This is useful to map types to a grouping.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

What does This is useful to map types to a grouping. mean? #Resolved

new DataPoint() { Timeframe = "12-25yrs" , Score = 3 },
new DataPoint() { Timeframe = "0-5yrs" , Score = 4 },
new DataPoint() { Timeframe = "12-25yrs" , Score = 5 },
new DataPoint() { Timeframe = "25+yrs" , Score = 5 },

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
newDataPoint(){Timeframe="25+yrs",Score=5},
newDataPoint(){Timeframe="25+yrs",Score=5},
``` #Resolved


/// This example demonstrates the use of the ValueMappingEstimator by mapping strings to other string values, or floats to strings.
/// This is useful to map types to a grouping.
/// It is possible to have multiple values map to the same category.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This sentence is not very clear to me. #Resolved

namespace Microsoft.ML.Samples.Dynamic
{
// This example illustrates how to convert multiple columns of different types to one type, in this case System.Single.
// This is often a useful data transformation before concatenting the features together and passing them to a particular estimator.

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

concatenting [](start = 57, length = 12)

typo. #Closed


public static void Example()
{
var mlContext = new MLContext(seed: 1);

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

var mlContext = new MLContext(seed: 1); [](start = 12, length = 39)

I see missing comments overall in this sample which we usually have in other samples e.g. comments above the MLContext etc. #Closed

// TransformedData obtained post-transformation.
//
// Timeframe TimeframeCategory Label Score ScoreCategory
// 0 - 4yrs Short 1 1 Low

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 - 4 [](start = 15, length = 5)

There should not be spaces between hyphen here. #Closed


// Create the lookup map data IEnumerable.
var lookupData = new[] {
new LookupMap { Value = 3.14f, Category = "Low" },

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Value = 3.14f, Category = "Low" [](start = 32, length = 31)

is it intentional that order of Value and Category differ from the rest? #Closed

// Convert to IDataView
var lookupIdvMap = mlContext.Data.LoadFromEnumerable(lookupData);

// Constructs the ValueMappingEstimator making the ML.net pipeline

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ML.net [](start = 63, length = 6)

I think we advertise it as ML.NET not ML.net, right? #Closed

foreach (var featureRow in features)
Console.WriteLine($"{featureRow.Price}\t\t{featureRow.PriceCategory}");

// TransformedData obtained post-transformation.

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

// TransformedData obtained post-transformation. [](start = 12, length = 48)

Everywhere else this is "// Expected output:" #Closed

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I think this is fine too, it matches the name of the type.


In reply to: 271420199 [](ancestors = 271420199)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ok.


In reply to: 271466196 [](ancestors = 271466196,271420199)

}

// Timeframe Feature
// 0 - 4yrs 0, 5, 300

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 - 4yrs [](start = 15, length = 8)

No spaces between hyphen here. #Closed


class TransformedData : DataPoint
{
public int[] Feature { get; set; }

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Feature [](start = 25, length = 7)

Should be 'Features" as you mentioned this as Features Column in the comments below, right? #Closed

/// <format type="text/markdown">
/// <![CDATA[
/// [!code-csharp[KeyToValueMappingEstimator](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/ValueMappingStringToKeyType.cs)]
/// [!code-csharp[KeyToValueMappingEstimator](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/ValueMappingStringToKeyType.cs)]

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

KeyToValueMappingEstimator [](start = 27, length = 26)

It should be the name of the extension method e.g. MapKeyToValue. Can you please also check this inconsistency in the rest of the file? #Closed

}

// The resulting data type after the transformation
private sealed class TransformedData : InputData

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

sealed [](start = 16, length = 6)

we don't need to worry about sealed. it might give the wrong impression that the data classes should be sealed.

I added this note to the checklist #Resolved

public string Feature2;
public DateTime Feature3;
public double Feature4;
}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

please move the data classes below example as discussed in the group (i also added this note to the checklist) #Resolved

new DataPoint() { Price = 1.19f },
new DataPoint() { Price = 2.17f },
new DataPoint() { Price = 33.784f },

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

extra line #Resolved

public string Category { get; set; }

}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

extra line #Resolved


namespace Microsoft.ML.Samples.Dynamic
{
public static class MapValueIdvLookup

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

MapValueIdvLookup [](start = 24, length = 17)

Let's change the filename to say Idv instead of IDV #Resolved

// 0 23 6.368921E+17 0.1206
// 1 8904 6.368924E+17 8.09

}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

i see a lot of extra empty lines. please have a second pass and remove them. #Resolved

@zeahmedzeahmed left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

:shipit:

// A: False Aconv:0
// A: False Aconv:0
}
private class InputData

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

pr [](start = 7, length = 3)

need extra line here

{
public bool Survived;
}
private sealed class TransformedData : InputData

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

pr [](start = 8, length = 2)

ditto

@shmoradimsshmoradims left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

:shipit:

@sfilipi
sfilipi merged commit e285889 into dotnet:masterApr 4, 2019
@sfilipi
sfilipi deleted the conversionSamples branch April 4, 2019 16:49
sfilipi added a commit to sfilipi/machinelearning-1 that referenced this pull request Apr 9, 2019
* adding a sample for convert MultiColumns. Moving files around.
* Adjust the samples about ValueMapping
* Addressing PR comments
@ghostghost locked as resolved and limited conversation to collaborators Mar 23, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

documentationRelated to documentation of ML.NET

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@sfilipi@wschin@shmoradims@zeahmed
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Conversion catalog samples - #3167

Merged
sfilipi merged 3 commits into
dotnet:masterfrom
sfilipi:conversionSamples
Apr 4, 2019
Merged

Conversion catalog samples#3167
sfilipi merged 3 commits into
dotnet:masterfrom
sfilipi:conversionSamples

Conversation

@sfilipi

Copy link
Copy Markdown
Member

Towards #1209
Adding and adjusting samples for the Conversions catalog.

@sfilipi
sfilipi requested review from singlis and zeahmedApril 2, 2019 06:26
@sfilipisfilipi self-assigned this Apr 2, 2019
@sfilipisfilipi added the documentation Related to documentation of ML.NET label Apr 2, 2019
@codecov

codecovBot commented Apr 2, 2019

Copy link
Copy Markdown

Codecov Report

Merging #3167 into master will decrease coverage by <.01%.
The diff coverage is n/a.

@@ Coverage Diff @@## master #3167 +/- ##
==========================================
- Coverage 72.54% 72.53% -0.01% 
==========================================
Files 807 807 Lines 144774 144774 Branches 16208 16208 ==========================================
- Hits 105022 105011 -11 - Misses 35338 35348 +10 - Partials 4414 4415 +1
FlagCoverage Δ
#Debug72.53% <ø> (-0.01%)⬇️
#production68.12% <ø> (-0.01%)⬇️
#test88.82% <ø> (-0.01%)⬇️
Impacted FilesCoverage Δ
...ML.Data/Transforms/ConversionsExtensionsCatalog.cs44.87% <ø> (ø)⬆️
...c/Microsoft.ML.FastTree/Utils/ThreadTaskManager.cs79.48% <0%> (-20.52%)⬇️
...soft.ML.TestFramework/DataPipe/TestDataPipeBase.cs73.7% <0%> (-0.34%)⬇️


public uint Label { get; set; }
}

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

3 empty lines? #Resolved

public static class ConvertTypeMultiColumn
{
// The initial data type
private class InputData

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Other places we have C# structures defined after the actual example function. #Resolved

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

i like that! focus should be on the example.


In reply to: 271401627 [](ancestors = 271401627)

{
public float Converted1 { get; set; }
public float Converted2 { get; set; }

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Do we want to remove this empty line? #Resolved

new InputOutputColumnPair("Converted3", "Feature3"),
new InputOutputColumnPair("Converted4", "Feature4"),

}, DataKind.Single);

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

{ is not aligned with }. #Resolved

new InputOutputColumnPair("Converted2", "Feature2"),
new InputOutputColumnPair("Converted3", "Feature3"),
new InputOutputColumnPair("Converted4", "Feature4"),

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please remove this empty line. #Resolved


}, DataKind.Single);

// Let's train our pipeline, and then apply it to the same data.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please add more detailed description about what this pipeline is doing. For example, input column A will be converted to output column B. #Pending

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I am not adding too many details, because it is hard to maintain as stale names in the comments don't get flagged by anything.


In reply to: 271402918 [](ancestors = 271402918)

{
public static class MapValue
{
class DataPoint

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
class DataPoint
privateclass DataPoint
``` #Resolved

public int Score { get; set; }
}

class TransformedData : DataPoint

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
classTransformedData:DataPoint
privateclassTransformedDataPoint:DataPoint
``` #Resolved



/// This example demonstrates the use of the ValueMappingEstimator by mapping strings to other string values, or floats to strings.
/// This is useful to map types to a grouping.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

What does This is useful to map types to a grouping. mean? #Resolved

new DataPoint() { Timeframe = "12-25yrs" , Score = 3 },
new DataPoint() { Timeframe = "0-5yrs" , Score = 4 },
new DataPoint() { Timeframe = "12-25yrs" , Score = 5 },
new DataPoint() { Timeframe = "25+yrs" , Score = 5 },

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
newDataPoint(){Timeframe="25+yrs",Score=5},
newDataPoint(){Timeframe="25+yrs",Score=5},
``` #Resolved


/// This example demonstrates the use of the ValueMappingEstimator by mapping strings to other string values, or floats to strings.
/// This is useful to map types to a grouping.
/// It is possible to have multiple values map to the same category.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This sentence is not very clear to me. #Resolved

namespace Microsoft.ML.Samples.Dynamic
{
// This example illustrates how to convert multiple columns of different types to one type, in this case System.Single.
// This is often a useful data transformation before concatenting the features together and passing them to a particular estimator.

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

concatenting [](start = 57, length = 12)

typo. #Closed


public static void Example()
{
var mlContext = new MLContext(seed: 1);

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

var mlContext = new MLContext(seed: 1); [](start = 12, length = 39)

I see missing comments overall in this sample which we usually have in other samples e.g. comments above the MLContext etc. #Closed

// TransformedData obtained post-transformation.
//
// Timeframe TimeframeCategory Label Score ScoreCategory
// 0 - 4yrs Short 1 1 Low

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 - 4 [](start = 15, length = 5)

There should not be spaces between hyphen here. #Closed


// Create the lookup map data IEnumerable.
var lookupData = new[] {
new LookupMap { Value = 3.14f, Category = "Low" },

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Value = 3.14f, Category = "Low" [](start = 32, length = 31)

is it intentional that order of Value and Category differ from the rest? #Closed

// Convert to IDataView
var lookupIdvMap = mlContext.Data.LoadFromEnumerable(lookupData);

// Constructs the ValueMappingEstimator making the ML.net pipeline

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ML.net [](start = 63, length = 6)

I think we advertise it as ML.NET not ML.net, right? #Closed

foreach (var featureRow in features)
Console.WriteLine($"{featureRow.Price}\t\t{featureRow.PriceCategory}");

// TransformedData obtained post-transformation.

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

// TransformedData obtained post-transformation. [](start = 12, length = 48)

Everywhere else this is "// Expected output:" #Closed

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I think this is fine too, it matches the name of the type.


In reply to: 271420199 [](ancestors = 271420199)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ok.


In reply to: 271466196 [](ancestors = 271466196,271420199)

}

// Timeframe Feature
// 0 - 4yrs 0, 5, 300

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 - 4yrs [](start = 15, length = 8)

No spaces between hyphen here. #Closed


class TransformedData : DataPoint
{
public int[] Feature { get; set; }

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Feature [](start = 25, length = 7)

Should be 'Features" as you mentioned this as Features Column in the comments below, right? #Closed

/// <format type="text/markdown">
/// <![CDATA[
/// [!code-csharp[KeyToValueMappingEstimator](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/ValueMappingStringToKeyType.cs)]
/// [!code-csharp[KeyToValueMappingEstimator](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/ValueMappingStringToKeyType.cs)]

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

KeyToValueMappingEstimator [](start = 27, length = 26)

It should be the name of the extension method e.g. MapKeyToValue. Can you please also check this inconsistency in the rest of the file? #Closed

}

// The resulting data type after the transformation
private sealed class TransformedData : InputData

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

sealed [](start = 16, length = 6)

we don't need to worry about sealed. it might give the wrong impression that the data classes should be sealed.

I added this note to the checklist #Resolved

public string Feature2;
public DateTime Feature3;
public double Feature4;
}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

please move the data classes below example as discussed in the group (i also added this note to the checklist) #Resolved

new DataPoint() { Price = 1.19f },
new DataPoint() { Price = 2.17f },
new DataPoint() { Price = 33.784f },

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

extra line #Resolved

public string Category { get; set; }

}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

extra line #Resolved


namespace Microsoft.ML.Samples.Dynamic
{
public static class MapValueIdvLookup

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

MapValueIdvLookup [](start = 24, length = 17)

Let's change the filename to say Idv instead of IDV #Resolved

// 0 23 6.368921E+17 0.1206
// 1 8904 6.368924E+17 8.09

}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

i see a lot of extra empty lines. please have a second pass and remove them. #Resolved

@zeahmedzeahmed left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

:shipit:

// A: False Aconv:0
// A: False Aconv:0
}
private class InputData

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

pr [](start = 7, length = 3)

need extra line here

{
public bool Survived;
}
private sealed class TransformedData : InputData

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

pr [](start = 8, length = 2)

ditto

@shmoradimsshmoradims left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

:shipit:

@sfilipi
sfilipi merged commit e285889 into dotnet:masterApr 4, 2019
@sfilipi
sfilipi deleted the conversionSamples branch April 4, 2019 16:49
sfilipi added a commit to sfilipi/machinelearning-1 that referenced this pull request Apr 9, 2019
* adding a sample for convert MultiColumns. Moving files around.
* Adjust the samples about ValueMapping
* Addressing PR comments
@ghostghost locked as resolved and limited conversation to collaborators Mar 23, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

documentationRelated to documentation of ML.NET

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@sfilipi@wschin@shmoradims@zeahmed
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Conversion catalog samples - #3167

Merged
sfilipi merged 3 commits into
dotnet:masterfrom
sfilipi:conversionSamples
Apr 4, 2019
Merged

Conversion catalog samples#3167
sfilipi merged 3 commits into
dotnet:masterfrom
sfilipi:conversionSamples

Conversation

@sfilipi

Copy link
Copy Markdown
Member

Towards #1209
Adding and adjusting samples for the Conversions catalog.

@sfilipi
sfilipi requested review from singlis and zeahmedApril 2, 2019 06:26
@sfilipisfilipi self-assigned this Apr 2, 2019
@sfilipisfilipi added the documentation Related to documentation of ML.NET label Apr 2, 2019
@codecov

codecovBot commented Apr 2, 2019

Copy link
Copy Markdown

Codecov Report

Merging #3167 into master will decrease coverage by <.01%.
The diff coverage is n/a.

@@ Coverage Diff @@## master #3167 +/- ##
==========================================
- Coverage 72.54% 72.53% -0.01% 
==========================================
Files 807 807 Lines 144774 144774 Branches 16208 16208 ==========================================
- Hits 105022 105011 -11 - Misses 35338 35348 +10 - Partials 4414 4415 +1
FlagCoverage Δ
#Debug72.53% <ø> (-0.01%)⬇️
#production68.12% <ø> (-0.01%)⬇️
#test88.82% <ø> (-0.01%)⬇️
Impacted FilesCoverage Δ
...ML.Data/Transforms/ConversionsExtensionsCatalog.cs44.87% <ø> (ø)⬆️
...c/Microsoft.ML.FastTree/Utils/ThreadTaskManager.cs79.48% <0%> (-20.52%)⬇️
...soft.ML.TestFramework/DataPipe/TestDataPipeBase.cs73.7% <0%> (-0.34%)⬇️


public uint Label { get; set; }
}

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

3 empty lines? #Resolved

public static class ConvertTypeMultiColumn
{
// The initial data type
private class InputData

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Other places we have C# structures defined after the actual example function. #Resolved

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

i like that! focus should be on the example.


In reply to: 271401627 [](ancestors = 271401627)

{
public float Converted1 { get; set; }
public float Converted2 { get; set; }

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Do we want to remove this empty line? #Resolved

new InputOutputColumnPair("Converted3", "Feature3"),
new InputOutputColumnPair("Converted4", "Feature4"),

}, DataKind.Single);

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

{ is not aligned with }. #Resolved

new InputOutputColumnPair("Converted2", "Feature2"),
new InputOutputColumnPair("Converted3", "Feature3"),
new InputOutputColumnPair("Converted4", "Feature4"),

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please remove this empty line. #Resolved


}, DataKind.Single);

// Let's train our pipeline, and then apply it to the same data.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please add more detailed description about what this pipeline is doing. For example, input column A will be converted to output column B. #Pending

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I am not adding too many details, because it is hard to maintain as stale names in the comments don't get flagged by anything.


In reply to: 271402918 [](ancestors = 271402918)

{
public static class MapValue
{
class DataPoint

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
class DataPoint
privateclass DataPoint
``` #Resolved

public int Score { get; set; }
}

class TransformedData : DataPoint

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
classTransformedData:DataPoint
privateclassTransformedDataPoint:DataPoint
``` #Resolved



/// This example demonstrates the use of the ValueMappingEstimator by mapping strings to other string values, or floats to strings.
/// This is useful to map types to a grouping.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

What does This is useful to map types to a grouping. mean? #Resolved

new DataPoint() { Timeframe = "12-25yrs" , Score = 3 },
new DataPoint() { Timeframe = "0-5yrs" , Score = 4 },
new DataPoint() { Timeframe = "12-25yrs" , Score = 5 },
new DataPoint() { Timeframe = "25+yrs" , Score = 5 },

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
newDataPoint(){Timeframe="25+yrs",Score=5},
newDataPoint(){Timeframe="25+yrs",Score=5},
``` #Resolved


/// This example demonstrates the use of the ValueMappingEstimator by mapping strings to other string values, or floats to strings.
/// This is useful to map types to a grouping.
/// It is possible to have multiple values map to the same category.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This sentence is not very clear to me. #Resolved

namespace Microsoft.ML.Samples.Dynamic
{
// This example illustrates how to convert multiple columns of different types to one type, in this case System.Single.
// This is often a useful data transformation before concatenting the features together and passing them to a particular estimator.

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

concatenting [](start = 57, length = 12)

typo. #Closed


public static void Example()
{
var mlContext = new MLContext(seed: 1);

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

var mlContext = new MLContext(seed: 1); [](start = 12, length = 39)

I see missing comments overall in this sample which we usually have in other samples e.g. comments above the MLContext etc. #Closed

// TransformedData obtained post-transformation.
//
// Timeframe TimeframeCategory Label Score ScoreCategory
// 0 - 4yrs Short 1 1 Low

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 - 4 [](start = 15, length = 5)

There should not be spaces between hyphen here. #Closed


// Create the lookup map data IEnumerable.
var lookupData = new[] {
new LookupMap { Value = 3.14f, Category = "Low" },

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Value = 3.14f, Category = "Low" [](start = 32, length = 31)

is it intentional that order of Value and Category differ from the rest? #Closed

// Convert to IDataView
var lookupIdvMap = mlContext.Data.LoadFromEnumerable(lookupData);

// Constructs the ValueMappingEstimator making the ML.net pipeline

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ML.net [](start = 63, length = 6)

I think we advertise it as ML.NET not ML.net, right? #Closed

foreach (var featureRow in features)
Console.WriteLine($"{featureRow.Price}\t\t{featureRow.PriceCategory}");

// TransformedData obtained post-transformation.

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

// TransformedData obtained post-transformation. [](start = 12, length = 48)

Everywhere else this is "// Expected output:" #Closed

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I think this is fine too, it matches the name of the type.


In reply to: 271420199 [](ancestors = 271420199)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ok.


In reply to: 271466196 [](ancestors = 271466196,271420199)

}

// Timeframe Feature
// 0 - 4yrs 0, 5, 300

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 - 4yrs [](start = 15, length = 8)

No spaces between hyphen here. #Closed


class TransformedData : DataPoint
{
public int[] Feature { get; set; }

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Feature [](start = 25, length = 7)

Should be 'Features" as you mentioned this as Features Column in the comments below, right? #Closed

/// <format type="text/markdown">
/// <![CDATA[
/// [!code-csharp[KeyToValueMappingEstimator](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/ValueMappingStringToKeyType.cs)]
/// [!code-csharp[KeyToValueMappingEstimator](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/ValueMappingStringToKeyType.cs)]

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

KeyToValueMappingEstimator [](start = 27, length = 26)

It should be the name of the extension method e.g. MapKeyToValue. Can you please also check this inconsistency in the rest of the file? #Closed

}

// The resulting data type after the transformation
private sealed class TransformedData : InputData

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

sealed [](start = 16, length = 6)

we don't need to worry about sealed. it might give the wrong impression that the data classes should be sealed.

I added this note to the checklist #Resolved

public string Feature2;
public DateTime Feature3;
public double Feature4;
}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

please move the data classes below example as discussed in the group (i also added this note to the checklist) #Resolved

new DataPoint() { Price = 1.19f },
new DataPoint() { Price = 2.17f },
new DataPoint() { Price = 33.784f },

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

extra line #Resolved

public string Category { get; set; }

}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

extra line #Resolved


namespace Microsoft.ML.Samples.Dynamic
{
public static class MapValueIdvLookup

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

MapValueIdvLookup [](start = 24, length = 17)

Let's change the filename to say Idv instead of IDV #Resolved

// 0 23 6.368921E+17 0.1206
// 1 8904 6.368924E+17 8.09

}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

i see a lot of extra empty lines. please have a second pass and remove them. #Resolved

@zeahmedzeahmed left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

:shipit:

// A: False Aconv:0
// A: False Aconv:0
}
private class InputData

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

pr [](start = 7, length = 3)

need extra line here

{
public bool Survived;
}
private sealed class TransformedData : InputData

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

pr [](start = 8, length = 2)

ditto

@shmoradimsshmoradims left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

:shipit:

@sfilipi
sfilipi merged commit e285889 into dotnet:masterApr 4, 2019
@sfilipi
sfilipi deleted the conversionSamples branch April 4, 2019 16:49
sfilipi added a commit to sfilipi/machinelearning-1 that referenced this pull request Apr 9, 2019
* adding a sample for convert MultiColumns. Moving files around.
* Adjust the samples about ValueMapping
* Addressing PR comments
@ghostghost locked as resolved and limited conversation to collaborators Mar 23, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

documentationRelated to documentation of ML.NET

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@sfilipi@wschin@shmoradims@zeahmed
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Conversion catalog samples - #3167

Merged
sfilipi merged 3 commits into
dotnet:masterfrom
sfilipi:conversionSamples
Apr 4, 2019
Merged

Conversion catalog samples#3167
sfilipi merged 3 commits into
dotnet:masterfrom
sfilipi:conversionSamples

Conversation

@sfilipi

Copy link
Copy Markdown
Member

Towards #1209
Adding and adjusting samples for the Conversions catalog.

@sfilipi
sfilipi requested review from singlis and zeahmedApril 2, 2019 06:26
@sfilipisfilipi self-assigned this Apr 2, 2019
@sfilipisfilipi added the documentation Related to documentation of ML.NET label Apr 2, 2019
@codecov

codecovBot commented Apr 2, 2019

Copy link
Copy Markdown

Codecov Report

Merging #3167 into master will decrease coverage by <.01%.
The diff coverage is n/a.

@@ Coverage Diff @@## master #3167 +/- ##
==========================================
- Coverage 72.54% 72.53% -0.01% 
==========================================
Files 807 807 Lines 144774 144774 Branches 16208 16208 ==========================================
- Hits 105022 105011 -11 - Misses 35338 35348 +10 - Partials 4414 4415 +1
FlagCoverage Δ
#Debug72.53% <ø> (-0.01%)⬇️
#production68.12% <ø> (-0.01%)⬇️
#test88.82% <ø> (-0.01%)⬇️
Impacted FilesCoverage Δ
...ML.Data/Transforms/ConversionsExtensionsCatalog.cs44.87% <ø> (ø)⬆️
...c/Microsoft.ML.FastTree/Utils/ThreadTaskManager.cs79.48% <0%> (-20.52%)⬇️
...soft.ML.TestFramework/DataPipe/TestDataPipeBase.cs73.7% <0%> (-0.34%)⬇️


public uint Label { get; set; }
}

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

3 empty lines? #Resolved

public static class ConvertTypeMultiColumn
{
// The initial data type
private class InputData

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Other places we have C# structures defined after the actual example function. #Resolved

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

i like that! focus should be on the example.


In reply to: 271401627 [](ancestors = 271401627)

{
public float Converted1 { get; set; }
public float Converted2 { get; set; }

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Do we want to remove this empty line? #Resolved

new InputOutputColumnPair("Converted3", "Feature3"),
new InputOutputColumnPair("Converted4", "Feature4"),

}, DataKind.Single);

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

{ is not aligned with }. #Resolved

new InputOutputColumnPair("Converted2", "Feature2"),
new InputOutputColumnPair("Converted3", "Feature3"),
new InputOutputColumnPair("Converted4", "Feature4"),

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please remove this empty line. #Resolved


}, DataKind.Single);

// Let's train our pipeline, and then apply it to the same data.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please add more detailed description about what this pipeline is doing. For example, input column A will be converted to output column B. #Pending

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I am not adding too many details, because it is hard to maintain as stale names in the comments don't get flagged by anything.


In reply to: 271402918 [](ancestors = 271402918)

{
public static class MapValue
{
class DataPoint

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
class DataPoint
privateclass DataPoint
``` #Resolved

public int Score { get; set; }
}

class TransformedData : DataPoint

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
classTransformedData:DataPoint
privateclassTransformedDataPoint:DataPoint
``` #Resolved



/// This example demonstrates the use of the ValueMappingEstimator by mapping strings to other string values, or floats to strings.
/// This is useful to map types to a grouping.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

What does This is useful to map types to a grouping. mean? #Resolved

new DataPoint() { Timeframe = "12-25yrs" , Score = 3 },
new DataPoint() { Timeframe = "0-5yrs" , Score = 4 },
new DataPoint() { Timeframe = "12-25yrs" , Score = 5 },
new DataPoint() { Timeframe = "25+yrs" , Score = 5 },

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
newDataPoint(){Timeframe="25+yrs",Score=5},
newDataPoint(){Timeframe="25+yrs",Score=5},
``` #Resolved


/// This example demonstrates the use of the ValueMappingEstimator by mapping strings to other string values, or floats to strings.
/// This is useful to map types to a grouping.
/// It is possible to have multiple values map to the same category.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This sentence is not very clear to me. #Resolved

namespace Microsoft.ML.Samples.Dynamic
{
// This example illustrates how to convert multiple columns of different types to one type, in this case System.Single.
// This is often a useful data transformation before concatenting the features together and passing them to a particular estimator.

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

concatenting [](start = 57, length = 12)

typo. #Closed


public static void Example()
{
var mlContext = new MLContext(seed: 1);

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

var mlContext = new MLContext(seed: 1); [](start = 12, length = 39)

I see missing comments overall in this sample which we usually have in other samples e.g. comments above the MLContext etc. #Closed

// TransformedData obtained post-transformation.
//
// Timeframe TimeframeCategory Label Score ScoreCategory
// 0 - 4yrs Short 1 1 Low

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 - 4 [](start = 15, length = 5)

There should not be spaces between hyphen here. #Closed


// Create the lookup map data IEnumerable.
var lookupData = new[] {
new LookupMap { Value = 3.14f, Category = "Low" },

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Value = 3.14f, Category = "Low" [](start = 32, length = 31)

is it intentional that order of Value and Category differ from the rest? #Closed

// Convert to IDataView
var lookupIdvMap = mlContext.Data.LoadFromEnumerable(lookupData);

// Constructs the ValueMappingEstimator making the ML.net pipeline

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ML.net [](start = 63, length = 6)

I think we advertise it as ML.NET not ML.net, right? #Closed

foreach (var featureRow in features)
Console.WriteLine($"{featureRow.Price}\t\t{featureRow.PriceCategory}");

// TransformedData obtained post-transformation.

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

// TransformedData obtained post-transformation. [](start = 12, length = 48)

Everywhere else this is "// Expected output:" #Closed

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I think this is fine too, it matches the name of the type.


In reply to: 271420199 [](ancestors = 271420199)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ok.


In reply to: 271466196 [](ancestors = 271466196,271420199)

}

// Timeframe Feature
// 0 - 4yrs 0, 5, 300

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 - 4yrs [](start = 15, length = 8)

No spaces between hyphen here. #Closed


class TransformedData : DataPoint
{
public int[] Feature { get; set; }

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Feature [](start = 25, length = 7)

Should be 'Features" as you mentioned this as Features Column in the comments below, right? #Closed

/// <format type="text/markdown">
/// <![CDATA[
/// [!code-csharp[KeyToValueMappingEstimator](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/ValueMappingStringToKeyType.cs)]
/// [!code-csharp[KeyToValueMappingEstimator](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/ValueMappingStringToKeyType.cs)]

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

KeyToValueMappingEstimator [](start = 27, length = 26)

It should be the name of the extension method e.g. MapKeyToValue. Can you please also check this inconsistency in the rest of the file? #Closed

}

// The resulting data type after the transformation
private sealed class TransformedData : InputData

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

sealed [](start = 16, length = 6)

we don't need to worry about sealed. it might give the wrong impression that the data classes should be sealed.

I added this note to the checklist #Resolved

public string Feature2;
public DateTime Feature3;
public double Feature4;
}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

please move the data classes below example as discussed in the group (i also added this note to the checklist) #Resolved

new DataPoint() { Price = 1.19f },
new DataPoint() { Price = 2.17f },
new DataPoint() { Price = 33.784f },

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

extra line #Resolved

public string Category { get; set; }

}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

extra line #Resolved


namespace Microsoft.ML.Samples.Dynamic
{
public static class MapValueIdvLookup

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

MapValueIdvLookup [](start = 24, length = 17)

Let's change the filename to say Idv instead of IDV #Resolved

// 0 23 6.368921E+17 0.1206
// 1 8904 6.368924E+17 8.09

}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

i see a lot of extra empty lines. please have a second pass and remove them. #Resolved

@zeahmedzeahmed left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

:shipit:

// A: False Aconv:0
// A: False Aconv:0
}
private class InputData

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

pr [](start = 7, length = 3)

need extra line here

{
public bool Survived;
}
private sealed class TransformedData : InputData

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

pr [](start = 8, length = 2)

ditto

@shmoradimsshmoradims left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

:shipit:

@sfilipi
sfilipi merged commit e285889 into dotnet:masterApr 4, 2019
@sfilipi
sfilipi deleted the conversionSamples branch April 4, 2019 16:49
sfilipi added a commit to sfilipi/machinelearning-1 that referenced this pull request Apr 9, 2019
* adding a sample for convert MultiColumns. Moving files around.
* Adjust the samples about ValueMapping
* Addressing PR comments
@ghostghost locked as resolved and limited conversation to collaborators Mar 23, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

documentationRelated to documentation of ML.NET

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@sfilipi@wschin@shmoradims@zeahmed
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Conversion catalog samples - #3167

Merged
sfilipi merged 3 commits into
dotnet:masterfrom
sfilipi:conversionSamples
Apr 4, 2019
Merged

Conversion catalog samples#3167
sfilipi merged 3 commits into
dotnet:masterfrom
sfilipi:conversionSamples

Conversation

@sfilipi

Copy link
Copy Markdown
Member

Towards #1209
Adding and adjusting samples for the Conversions catalog.

@sfilipi
sfilipi requested review from singlis and zeahmedApril 2, 2019 06:26
@sfilipisfilipi self-assigned this Apr 2, 2019
@sfilipisfilipi added the documentation Related to documentation of ML.NET label Apr 2, 2019
@codecov

codecovBot commented Apr 2, 2019

Copy link
Copy Markdown

Codecov Report

Merging #3167 into master will decrease coverage by <.01%.
The diff coverage is n/a.

@@ Coverage Diff @@## master #3167 +/- ##
==========================================
- Coverage 72.54% 72.53% -0.01% 
==========================================
Files 807 807 Lines 144774 144774 Branches 16208 16208 ==========================================
- Hits 105022 105011 -11 - Misses 35338 35348 +10 - Partials 4414 4415 +1
FlagCoverage Δ
#Debug72.53% <ø> (-0.01%)⬇️
#production68.12% <ø> (-0.01%)⬇️
#test88.82% <ø> (-0.01%)⬇️
Impacted FilesCoverage Δ
...ML.Data/Transforms/ConversionsExtensionsCatalog.cs44.87% <ø> (ø)⬆️
...c/Microsoft.ML.FastTree/Utils/ThreadTaskManager.cs79.48% <0%> (-20.52%)⬇️
...soft.ML.TestFramework/DataPipe/TestDataPipeBase.cs73.7% <0%> (-0.34%)⬇️


public uint Label { get; set; }
}

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

3 empty lines? #Resolved

public static class ConvertTypeMultiColumn
{
// The initial data type
private class InputData

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Other places we have C# structures defined after the actual example function. #Resolved

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

i like that! focus should be on the example.


In reply to: 271401627 [](ancestors = 271401627)

{
public float Converted1 { get; set; }
public float Converted2 { get; set; }

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Do we want to remove this empty line? #Resolved

new InputOutputColumnPair("Converted3", "Feature3"),
new InputOutputColumnPair("Converted4", "Feature4"),

}, DataKind.Single);

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

{ is not aligned with }. #Resolved

new InputOutputColumnPair("Converted2", "Feature2"),
new InputOutputColumnPair("Converted3", "Feature3"),
new InputOutputColumnPair("Converted4", "Feature4"),

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please remove this empty line. #Resolved


}, DataKind.Single);

// Let's train our pipeline, and then apply it to the same data.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please add more detailed description about what this pipeline is doing. For example, input column A will be converted to output column B. #Pending

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I am not adding too many details, because it is hard to maintain as stale names in the comments don't get flagged by anything.


In reply to: 271402918 [](ancestors = 271402918)

{
public static class MapValue
{
class DataPoint

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
class DataPoint
privateclass DataPoint
``` #Resolved

public int Score { get; set; }
}

class TransformedData : DataPoint

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
classTransformedData:DataPoint
privateclassTransformedDataPoint:DataPoint
``` #Resolved



/// This example demonstrates the use of the ValueMappingEstimator by mapping strings to other string values, or floats to strings.
/// This is useful to map types to a grouping.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

What does This is useful to map types to a grouping. mean? #Resolved

new DataPoint() { Timeframe = "12-25yrs" , Score = 3 },
new DataPoint() { Timeframe = "0-5yrs" , Score = 4 },
new DataPoint() { Timeframe = "12-25yrs" , Score = 5 },
new DataPoint() { Timeframe = "25+yrs" , Score = 5 },

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
newDataPoint(){Timeframe="25+yrs",Score=5},
newDataPoint(){Timeframe="25+yrs",Score=5},
``` #Resolved


/// This example demonstrates the use of the ValueMappingEstimator by mapping strings to other string values, or floats to strings.
/// This is useful to map types to a grouping.
/// It is possible to have multiple values map to the same category.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This sentence is not very clear to me. #Resolved

namespace Microsoft.ML.Samples.Dynamic
{
// This example illustrates how to convert multiple columns of different types to one type, in this case System.Single.
// This is often a useful data transformation before concatenting the features together and passing them to a particular estimator.

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

concatenting [](start = 57, length = 12)

typo. #Closed


public static void Example()
{
var mlContext = new MLContext(seed: 1);

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

var mlContext = new MLContext(seed: 1); [](start = 12, length = 39)

I see missing comments overall in this sample which we usually have in other samples e.g. comments above the MLContext etc. #Closed

// TransformedData obtained post-transformation.
//
// Timeframe TimeframeCategory Label Score ScoreCategory
// 0 - 4yrs Short 1 1 Low

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 - 4 [](start = 15, length = 5)

There should not be spaces between hyphen here. #Closed


// Create the lookup map data IEnumerable.
var lookupData = new[] {
new LookupMap { Value = 3.14f, Category = "Low" },

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Value = 3.14f, Category = "Low" [](start = 32, length = 31)

is it intentional that order of Value and Category differ from the rest? #Closed

// Convert to IDataView
var lookupIdvMap = mlContext.Data.LoadFromEnumerable(lookupData);

// Constructs the ValueMappingEstimator making the ML.net pipeline

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ML.net [](start = 63, length = 6)

I think we advertise it as ML.NET not ML.net, right? #Closed

foreach (var featureRow in features)
Console.WriteLine($"{featureRow.Price}\t\t{featureRow.PriceCategory}");

// TransformedData obtained post-transformation.

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

// TransformedData obtained post-transformation. [](start = 12, length = 48)

Everywhere else this is "// Expected output:" #Closed

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I think this is fine too, it matches the name of the type.


In reply to: 271420199 [](ancestors = 271420199)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ok.


In reply to: 271466196 [](ancestors = 271466196,271420199)

}

// Timeframe Feature
// 0 - 4yrs 0, 5, 300

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 - 4yrs [](start = 15, length = 8)

No spaces between hyphen here. #Closed


class TransformedData : DataPoint
{
public int[] Feature { get; set; }

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Feature [](start = 25, length = 7)

Should be 'Features" as you mentioned this as Features Column in the comments below, right? #Closed

/// <format type="text/markdown">
/// <![CDATA[
/// [!code-csharp[KeyToValueMappingEstimator](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/ValueMappingStringToKeyType.cs)]
/// [!code-csharp[KeyToValueMappingEstimator](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/ValueMappingStringToKeyType.cs)]

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

KeyToValueMappingEstimator [](start = 27, length = 26)

It should be the name of the extension method e.g. MapKeyToValue. Can you please also check this inconsistency in the rest of the file? #Closed

}

// The resulting data type after the transformation
private sealed class TransformedData : InputData

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

sealed [](start = 16, length = 6)

we don't need to worry about sealed. it might give the wrong impression that the data classes should be sealed.

I added this note to the checklist #Resolved

public string Feature2;
public DateTime Feature3;
public double Feature4;
}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

please move the data classes below example as discussed in the group (i also added this note to the checklist) #Resolved

new DataPoint() { Price = 1.19f },
new DataPoint() { Price = 2.17f },
new DataPoint() { Price = 33.784f },

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

extra line #Resolved

public string Category { get; set; }

}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

extra line #Resolved


namespace Microsoft.ML.Samples.Dynamic
{
public static class MapValueIdvLookup

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

MapValueIdvLookup [](start = 24, length = 17)

Let's change the filename to say Idv instead of IDV #Resolved

// 0 23 6.368921E+17 0.1206
// 1 8904 6.368924E+17 8.09

}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

i see a lot of extra empty lines. please have a second pass and remove them. #Resolved

@zeahmedzeahmed left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

:shipit:

// A: False Aconv:0
// A: False Aconv:0
}
private class InputData

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

pr [](start = 7, length = 3)

need extra line here

{
public bool Survived;
}
private sealed class TransformedData : InputData

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

pr [](start = 8, length = 2)

ditto

@shmoradimsshmoradims left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

:shipit:

@sfilipi
sfilipi merged commit e285889 into dotnet:masterApr 4, 2019
@sfilipi
sfilipi deleted the conversionSamples branch April 4, 2019 16:49
sfilipi added a commit to sfilipi/machinelearning-1 that referenced this pull request Apr 9, 2019
* adding a sample for convert MultiColumns. Moving files around.
* Adjust the samples about ValueMapping
* Addressing PR comments
@ghostghost locked as resolved and limited conversation to collaborators Mar 23, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

documentationRelated to documentation of ML.NET

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@sfilipi@wschin@shmoradims@zeahmed
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Conversion catalog samples - #3167

Merged
sfilipi merged 3 commits into
dotnet:masterfrom
sfilipi:conversionSamples
Apr 4, 2019
Merged

Conversion catalog samples#3167
sfilipi merged 3 commits into
dotnet:masterfrom
sfilipi:conversionSamples

Conversation

@sfilipi

Copy link
Copy Markdown
Member

Towards #1209
Adding and adjusting samples for the Conversions catalog.

@sfilipi
sfilipi requested review from singlis and zeahmedApril 2, 2019 06:26
@sfilipisfilipi self-assigned this Apr 2, 2019
@sfilipisfilipi added the documentation Related to documentation of ML.NET label Apr 2, 2019
@codecov

codecovBot commented Apr 2, 2019

Copy link
Copy Markdown

Codecov Report

Merging #3167 into master will decrease coverage by <.01%.
The diff coverage is n/a.

@@ Coverage Diff @@## master #3167 +/- ##
==========================================
- Coverage 72.54% 72.53% -0.01% 
==========================================
Files 807 807 Lines 144774 144774 Branches 16208 16208 ==========================================
- Hits 105022 105011 -11 - Misses 35338 35348 +10 - Partials 4414 4415 +1
FlagCoverage Δ
#Debug72.53% <ø> (-0.01%)⬇️
#production68.12% <ø> (-0.01%)⬇️
#test88.82% <ø> (-0.01%)⬇️
Impacted FilesCoverage Δ
...ML.Data/Transforms/ConversionsExtensionsCatalog.cs44.87% <ø> (ø)⬆️
...c/Microsoft.ML.FastTree/Utils/ThreadTaskManager.cs79.48% <0%> (-20.52%)⬇️
...soft.ML.TestFramework/DataPipe/TestDataPipeBase.cs73.7% <0%> (-0.34%)⬇️


public uint Label { get; set; }
}

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

3 empty lines? #Resolved

public static class ConvertTypeMultiColumn
{
// The initial data type
private class InputData

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Other places we have C# structures defined after the actual example function. #Resolved

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

i like that! focus should be on the example.


In reply to: 271401627 [](ancestors = 271401627)

{
public float Converted1 { get; set; }
public float Converted2 { get; set; }

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Do we want to remove this empty line? #Resolved

new InputOutputColumnPair("Converted3", "Feature3"),
new InputOutputColumnPair("Converted4", "Feature4"),

}, DataKind.Single);

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

{ is not aligned with }. #Resolved

new InputOutputColumnPair("Converted2", "Feature2"),
new InputOutputColumnPair("Converted3", "Feature3"),
new InputOutputColumnPair("Converted4", "Feature4"),

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please remove this empty line. #Resolved


}, DataKind.Single);

// Let's train our pipeline, and then apply it to the same data.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please add more detailed description about what this pipeline is doing. For example, input column A will be converted to output column B. #Pending

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I am not adding too many details, because it is hard to maintain as stale names in the comments don't get flagged by anything.


In reply to: 271402918 [](ancestors = 271402918)

{
public static class MapValue
{
class DataPoint

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
class DataPoint
privateclass DataPoint
``` #Resolved

public int Score { get; set; }
}

class TransformedData : DataPoint

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
classTransformedData:DataPoint
privateclassTransformedDataPoint:DataPoint
``` #Resolved



/// This example demonstrates the use of the ValueMappingEstimator by mapping strings to other string values, or floats to strings.
/// This is useful to map types to a grouping.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

What does This is useful to map types to a grouping. mean? #Resolved

new DataPoint() { Timeframe = "12-25yrs" , Score = 3 },
new DataPoint() { Timeframe = "0-5yrs" , Score = 4 },
new DataPoint() { Timeframe = "12-25yrs" , Score = 5 },
new DataPoint() { Timeframe = "25+yrs" , Score = 5 },

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
newDataPoint(){Timeframe="25+yrs",Score=5},
newDataPoint(){Timeframe="25+yrs",Score=5},
``` #Resolved


/// This example demonstrates the use of the ValueMappingEstimator by mapping strings to other string values, or floats to strings.
/// This is useful to map types to a grouping.
/// It is possible to have multiple values map to the same category.

@wschinwschinApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This sentence is not very clear to me. #Resolved

namespace Microsoft.ML.Samples.Dynamic
{
// This example illustrates how to convert multiple columns of different types to one type, in this case System.Single.
// This is often a useful data transformation before concatenting the features together and passing them to a particular estimator.

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

concatenting [](start = 57, length = 12)

typo. #Closed


public static void Example()
{
var mlContext = new MLContext(seed: 1);

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

var mlContext = new MLContext(seed: 1); [](start = 12, length = 39)

I see missing comments overall in this sample which we usually have in other samples e.g. comments above the MLContext etc. #Closed

// TransformedData obtained post-transformation.
//
// Timeframe TimeframeCategory Label Score ScoreCategory
// 0 - 4yrs Short 1 1 Low

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 - 4 [](start = 15, length = 5)

There should not be spaces between hyphen here. #Closed


// Create the lookup map data IEnumerable.
var lookupData = new[] {
new LookupMap { Value = 3.14f, Category = "Low" },

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Value = 3.14f, Category = "Low" [](start = 32, length = 31)

is it intentional that order of Value and Category differ from the rest? #Closed

// Convert to IDataView
var lookupIdvMap = mlContext.Data.LoadFromEnumerable(lookupData);

// Constructs the ValueMappingEstimator making the ML.net pipeline

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ML.net [](start = 63, length = 6)

I think we advertise it as ML.NET not ML.net, right? #Closed

foreach (var featureRow in features)
Console.WriteLine($"{featureRow.Price}\t\t{featureRow.PriceCategory}");

// TransformedData obtained post-transformation.

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

// TransformedData obtained post-transformation. [](start = 12, length = 48)

Everywhere else this is "// Expected output:" #Closed

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I think this is fine too, it matches the name of the type.


In reply to: 271420199 [](ancestors = 271420199)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ok.


In reply to: 271466196 [](ancestors = 271466196,271420199)

}

// Timeframe Feature
// 0 - 4yrs 0, 5, 300

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 - 4yrs [](start = 15, length = 8)

No spaces between hyphen here. #Closed


class TransformedData : DataPoint
{
public int[] Feature { get; set; }

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Feature [](start = 25, length = 7)

Should be 'Features" as you mentioned this as Features Column in the comments below, right? #Closed

/// <format type="text/markdown">
/// <![CDATA[
/// [!code-csharp[KeyToValueMappingEstimator](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/ValueMappingStringToKeyType.cs)]
/// [!code-csharp[KeyToValueMappingEstimator](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/ValueMappingStringToKeyType.cs)]

@zeahmedzeahmedApr 2, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

KeyToValueMappingEstimator [](start = 27, length = 26)

It should be the name of the extension method e.g. MapKeyToValue. Can you please also check this inconsistency in the rest of the file? #Closed

}

// The resulting data type after the transformation
private sealed class TransformedData : InputData

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

sealed [](start = 16, length = 6)

we don't need to worry about sealed. it might give the wrong impression that the data classes should be sealed.

I added this note to the checklist #Resolved

public string Feature2;
public DateTime Feature3;
public double Feature4;
}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

please move the data classes below example as discussed in the group (i also added this note to the checklist) #Resolved

new DataPoint() { Price = 1.19f },
new DataPoint() { Price = 2.17f },
new DataPoint() { Price = 33.784f },

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

extra line #Resolved

public string Category { get; set; }

}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

extra line #Resolved


namespace Microsoft.ML.Samples.Dynamic
{
public static class MapValueIdvLookup

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

MapValueIdvLookup [](start = 24, length = 17)

Let's change the filename to say Idv instead of IDV #Resolved

// 0 23 6.368921E+17 0.1206
// 1 8904 6.368924E+17 8.09

}

@shmoradimsshmoradimsApr 2, 2019

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

i see a lot of extra empty lines. please have a second pass and remove them. #Resolved

@zeahmedzeahmed left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

:shipit:

// A: False Aconv:0
// A: False Aconv:0
}
private class InputData

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

pr [](start = 7, length = 3)

need extra line here

{
public bool Survived;
}
private sealed class TransformedData : InputData

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

pr [](start = 8, length = 2)

ditto

@shmoradimsshmoradims left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

:shipit:

@sfilipi
sfilipi merged commit e285889 into dotnet:masterApr 4, 2019
@sfilipi
sfilipi deleted the conversionSamples branch April 4, 2019 16:49
sfilipi added a commit to sfilipi/machinelearning-1 that referenced this pull request Apr 9, 2019
* adding a sample for convert MultiColumns. Moving files around.
* Adjust the samples about ValueMapping
* Addressing PR comments
@ghostghost locked as resolved and limited conversation to collaborators Mar 23, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

documentationRelated to documentation of ML.NET

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@sfilipi@wschin@shmoradims@zeahmed