Revize 4977ce53
Přidáno uživatelem Roman Kalivoda před téměř 4 roky(ů)
Server/ServerApp/Predictor/NaiveBayesClassifier.cs | ||
---|---|---|
1 |
using System; |
|
1 |
// |
|
2 |
// Author: Roman Kalivoda |
|
3 |
// |
|
4 | ||
5 |
using System; |
|
2 | 6 |
using System.Collections.Generic; |
3 | 7 |
using System.Linq; |
4 | 8 |
using System.Text; |
... | ... | |
9 | 13 | |
10 | 14 |
namespace ServerApp.Predictor |
11 | 15 |
{ |
16 |
/// <summary> |
|
17 |
/// Implementation of the naive Bayes classifier in ML.NET. |
|
18 |
/// </summary> |
|
12 | 19 |
class NaiveBayesClassifier : IPredictor |
13 | 20 |
{ |
21 |
/// <summary> |
|
22 |
/// Context of the ML.NET framework. |
|
23 |
/// </summary> |
|
14 | 24 |
private MLContext mlContext; |
15 | 25 | |
26 |
/// <summary> |
|
27 |
/// Model instance |
|
28 |
/// </summary> |
|
16 | 29 |
private ITransformer model; |
17 | 30 | |
31 |
/// <summary> |
|
32 |
/// Instantiates new <c>MLContext</c>. |
|
33 |
/// </summary> |
|
18 | 34 |
public NaiveBayesClassifier() |
19 | 35 |
{ |
20 | 36 |
mlContext = new MLContext(); |
21 | 37 | |
22 | 38 |
} |
23 | 39 | |
40 |
/// <summary> |
|
41 |
/// Extracts list of feature vectors from parsed info objects. |
|
42 |
/// </summary> |
|
43 |
/// <param name="weatherInfos">List of weather info objects.</param> |
|
44 |
/// <param name="activityInfos">List of info objects about activities at the site.</param> |
|
45 |
/// <returns>A list of feature vectors for model training.</returns> |
|
24 | 46 |
public IEnumerable<ModelInput> ExtractModelInput(List<WeatherInfo> weatherInfos, List<ActivityInfo> activityInfos) |
25 | 47 |
{ |
26 | 48 |
return weatherInfos.Select(e => new ModelInput(){ |
... | ... | |
29 | 51 |
}).ToList(); |
30 | 52 |
} |
31 | 53 | |
32 |
public void Fit(IEnumerable<ModelInput> trainingData)
|
|
54 |
public void Fit(IEnumerable<ModelInput> trainInput)
|
|
33 | 55 |
{ |
34 |
IDataView trainingDataView = mlContext.Data.LoadFromEnumerable(trainingData);
|
|
56 |
IDataView trainingDataView = mlContext.Data.LoadFromEnumerable(trainInput);
|
|
35 | 57 |
var dataProcessPipeline = mlContext.Transforms.Conversion.MapValueToKey(nameof(ModelInput.Label)) |
36 | 58 |
.Append(mlContext.Transforms.Concatenate("Features", new[] { "temp" }) |
37 | 59 |
.Append(mlContext.Transforms.NormalizeMinMax("Features", "Features"))); |
... | ... | |
43 | 65 | |
44 | 66 |
} |
45 | 67 | |
46 |
public String[] Predict(IEnumerable<ModelInput> input)
|
|
68 |
public IDataView Predict(IEnumerable<ModelInput> input)
|
|
47 | 69 |
{ |
48 | 70 |
var data = mlContext.Data.LoadFromEnumerable(input); |
49 | 71 |
IDataView result = model.Transform(data); |
50 |
String[] prediction = result.GetColumn<String>("prediction").ToArray(); |
|
51 | ||
52 |
return prediction; |
|
72 |
return result; |
|
53 | 73 |
} |
54 | 74 |
} |
55 | 75 |
} |
Také k dispozici: Unified diff
Re #8832 Refactoring
Refactored existing classes to comply with the coding conventions