30 卷數 7

# 測試回合-使用 C# 的線性回歸

``````income = 12.0157 + (1.0180)(14) + (0.5489)(12) + (-2.9566)(0)
= 12.0157 + 14.2520 + 6.5868 + 0
= 32.86
``````

## 演示的程式結構

``````using System;
namespace LinearRegression
{
class LinearRegressionProgram
{
static void Main(string[] args)
{
Console.WriteLine("Begin linear regression demo");
// Generate synthetic data
// Create design matrix
// Solve for LR coefficients
// Calculate R-squared value
// Do a prediction
Console.WriteLine("End linear regression demo");
}
static double Income(double x1, double x2,
double x3, double[] coef) { . . }
static double RSquared(double[][] data,
double[] coef) { . . }
static double[][] DummyData(int rows,
int seed) { . . }
static double[][] Design(double[][] data) { . . }
static double[] Solve(double[][] design) { . . }
static void ShowMatrix(double[][] m, int dec) { . . }
static void ShowVector(double[] v, int dec) { . . }
// ----------
static double[][] MatrixTranspose(double[][] matrix)
{ . . }
static double[][] MatrixProduct(double[][] matrixA,
double[][] matrixB) { . . }
static double[][] MatrixInverse(double[][] matrix)
{ . . }
// Other matrix routines here
}
} // ns
``````

## 解決方法

``````static double[] Solve(double[][] design)
{
int rows = design.Length;
int cols = data[0].Length;
double[][] X = MatrixCreate(rows, cols - 1);
double[][] Y = MatrixCreate(rows, 1);
...
``````

``````int j;
for (int i = 0; i < rows; ++i)
{
for (j = 0; j < cols - 1; ++j)
{
X[i][j] = design[i][j];
}
Y[i][0] = design[i][j]; // Last column
}
``````

``````...
double[][] Xt = MatrixTranspose(X);
double[][] XtX = MatrixProduct(Xt, X);
double[][] inv = MatrixInverse(XtX);
double[][] invXt = MatrixProduct(inv, Xt);
double[][] mResult = MatrixProduct(invXt, Y);
double[] result = MatrixToVector(mResult);
return result;
} // Solve
``````

4 x 4 的逆矩陣和 4 x 10 轉置矩陣，在代碼中，invXt 的產品具有大小為 4 x 10。InvXt 和 10 x 1 Y 矩陣，mResult ("矩陣結果") 在代碼中，該產品具有大小為 4 x 1。這些值是您需要的係數。為方便起見，單個列 Y 矩陣中的值被轉移到普通陣列使用 helper 方法 MatrixToVector。

## 總結

Dr. James McCaffreyy* 適合在雷德蒙的微軟研究院  他曾在幾個 Microsoft 產品包括 Internet Explorer 和冰。 博士。 麥卡弗裡可達到 jammc@microsoft.com。*