使用 excel 互操作在 C# 中生成预测值
Generate forecasting value in C#using excel interop
我想使用 excel intro 预测函数生成预测值。我需要使用 excel 预测线性函数,但我想将预测值存储到数据库中。
我不知道如何开始请帮助我。
如果您只需要一个线性预测函数,我认为 Excel Interop 可能有点矫枉过正。您可以从您的 C# 项目添加对 Office COM 库的引用并调用 WorksheetFunction.Forecast
函数,或者您可以直接添加一个方法来在您的 C# 代码中执行相同的操作。我认为线性预测逻辑本质上是这样的:
static double Forecast(double[] xValues, double[] yValues, double forecastPoint)
{
var xAverage = xValues.Average();
var yAverage = yValues.Average();
var bounds = yValues
.Select((y, i) => new { Value = y, Index = i })
.Aggregate(new { Top = 0.0, Bottom = 0.0 }, (acc, cur) =>
new
{
Top = acc.Top + (xValues[cur.Index] - xAverage) * (yValues[cur.Index] - yAverage),
Bottom = acc.Bottom + Math.Pow(xValues[cur.Index] - xAverage, 2.0)
});
var level = bounds.Top / bounds.Bottom;
return (yAverage - level * xAverage) + level * forecastPoint;
}
我想使用 excel intro 预测函数生成预测值。我需要使用 excel 预测线性函数,但我想将预测值存储到数据库中。
我不知道如何开始请帮助我。
如果您只需要一个线性预测函数,我认为 Excel Interop 可能有点矫枉过正。您可以从您的 C# 项目添加对 Office COM 库的引用并调用 WorksheetFunction.Forecast
函数,或者您可以直接添加一个方法来在您的 C# 代码中执行相同的操作。我认为线性预测逻辑本质上是这样的:
static double Forecast(double[] xValues, double[] yValues, double forecastPoint)
{
var xAverage = xValues.Average();
var yAverage = yValues.Average();
var bounds = yValues
.Select((y, i) => new { Value = y, Index = i })
.Aggregate(new { Top = 0.0, Bottom = 0.0 }, (acc, cur) =>
new
{
Top = acc.Top + (xValues[cur.Index] - xAverage) * (yValues[cur.Index] - yAverage),
Bottom = acc.Bottom + Math.Pow(xValues[cur.Index] - xAverage, 2.0)
});
var level = bounds.Top / bounds.Bottom;
return (yAverage - level * xAverage) + level * forecastPoint;
}