Added standard deviation

This commit is contained in:
Simon Gruber
2023-12-04 19:05:44 +01:00
parent c1051e932f
commit 96ae71b096
5 changed files with 94 additions and 29 deletions
+44 -18
View File
@@ -143,7 +143,7 @@ public class ReportGenerator : IDisposable
public ReportGenerator AddComparison(
string title,
Func<IEnumerable<double>, double> evaluationFunc
Func<IEnumerable<double>, (double, double)> evaluationFunc
)
{
var lookup = Images
@@ -153,28 +153,44 @@ public class ReportGenerator : IDisposable
Document.AppendHeading(2, title);
var byWer = lookup
.Select(g => (
Name: g.Key,
Value: evaluationFunc(g.Select(p => p.Distance)) * 100
))
.Select(g =>
{
var (value, deviation) = evaluationFunc(g.Select(p => p.Distance * 100));
return (
Name: g.Key,
Value: value,
Deviation: deviation
);
})
.OrderBy(g => g.Value);
Document.AppendHeading(3, "WER");
AppendComparison(("Error", "%"), byWer);
var byCer = lookup
.Select(g => (
Name: g.Key,
Value: evaluationFunc(g.SelectMany(p => p.Words, (_, word) => word.Distance))
))
.Select(g =>
{
var (value, deviation) =
evaluationFunc(g.SelectMany(p => p.Words, (_, word) => word.Distance));
return (
Name: g.Key,
Value: value,
Deviation: deviation
);
})
.OrderBy(g => g.Value);
Document.AppendHeading(3, "CER");
AppendComparison(("Changes", string.Empty), byCer);
var byTime = lookup
.Select(g => (
Name: g.Key,
Value: evaluationFunc(g.Select(p => p.ProcessingTime)) * 1000
))
.Select(g =>
{
var (value, deviation) = evaluationFunc(g.Select(p => p.ProcessingTime * 1000));
return (
Name: g.Key,
Value: value,
Deviation: deviation
);
})
.OrderBy(g => g.Value);
Document.AppendHeading(3, "Time");
AppendComparison(("Time", "ms"), byTime);
@@ -185,7 +201,7 @@ public class ReportGenerator : IDisposable
private void AppendComparison(
(string name, string unit)? valueInfo,
IEnumerable<(string, double)> values
IEnumerable<(string, double, double)> values
)
{
const int context = 5;
@@ -193,10 +209,15 @@ public class ReportGenerator : IDisposable
var tValues = values.ToArray();
var tContext = Math.Min(tValues.Length / 2, context);
Document.AppendTable(2, table =>
Document.AppendTable(3, table =>
{
table
.AppendHeader(new[] { "Processor", valueInfo?.name ?? "Value" })
.AppendHeader(new[]
{
"Processor",
valueInfo?.name ?? "Value",
"Deviation"
})
.AppendRows(tValues
.Take(tContext)
.Select(MakeRow))
@@ -209,8 +230,13 @@ public class ReportGenerator : IDisposable
return;
string[] MakeRow((string, double) v) =>
new[] { v.Item1, v.Item2.ToString("F2") + valueInfo?.unit };
string[] MakeRow((string, double, double) v) =>
new[]
{
v.Item1,
v.Item2.ToString("F2") + valueInfo?.unit,
v.Item3.ToString("F2") + valueInfo?.unit
};
});
}