c# - MathNet 中的回归给出了与 Excel 不同的结果
问题描述
我正在尝试添加一个组件,该组件将对我们应用程序中的数据进行回归分析。我编写了一个服务,它使用 MathNet Numerics 执行回归以计算各种特征的系数。我通过将与 Excel 中的回归分析相同的数据传递给它来对其进行测试。我正在使用的数据以 CSV 格式显示如下:
Accuracy,Age,Boundary Lines,Distance,Unit,County,Similarity,Size,Quality
0.894556528,0.301,1,1,1,1,0.753,0.76,0.625
0.870692849,0.234,1,0.737,1,1,0.598,0.804,0.625
1.044444444,0.49,1,1,1,0,0.714,0.933,0.833
1.04120514,0.165,1,1,1,1,0.224,0.268,0.833
1.157635468,0.179,1,1,1,1,0.224,0.268,0.8
1.080750408,1,1,1,1,1,0.826,0.536,0.833
1.100041511,1,1,1,1,1,0.569,0.5,0.833
0.932113964,1,1,1,1,1,0.78,0.25,0.625
0.966800438,0.267,1,1,1,1,0.916,0.408,0.625
0.941051136,0.212,1,0.713,1,1,0.755,0.667,0.625
0.932835821,0.429,1,1,1,1,1,0.999,1
1.689189189,0.12,1,1,1,1,1,0.941,1
1.199451679,0.292,1,1,1,1,1,0.6,1
0.7,0.188,1,0.981,1,1,1,1,0.333
0.795454545,1,1,1,1,1,1,0.364,0.5
“准确度”是从属值,我正在计算其他列的系数,将它们用作独立值。当我在 Excel 中进行回归时,我得到以下结果:
当我在代码中测试我的数据时,除了边界线和单位系数之外,我得到了相同的值,而在 Excel 中它们是 0,在我的代码中它们分别是 -0.581 和 0.876。
我正在通过创建评级列的矩阵和准确度列的向量并使用DirectRegressionMethod.NormalEquations
.
Matrix<double> ratingsMatrix = DenseMatrix.OfRowVectors(ratingsVectors);
Vector<double> accuracyVector = DenseVector.OfEnumerable(accuracyRatings);
Vector<double> coefficientVector = MultipleRegression.DirectMethod(ratingsMatrix, accuracyVector, DirectRegressionMethod.NormalEquations);
我试图找出差异的原因。Excel 的结果非常适合我的需要,所以我希望能够复制它。我怀疑这可能是因为这两列都是1?
解决方案
推荐阅读
- sql - 在 TOAD 数据点中将两行分组为一
- python - PyQt5 - 插槽不接受信号回调的参数
- r - 使用collapse_row和kable时如何解决pdf文档中长表的对齐/显示问题?
- python - 如何使用 python 从我的 CSV 中捕获打印数据
- python - 使用 psycopg2 和 pandas 处理错误查询产生的错误
- android - 如果从不可暂停的块中调用,Android 协程范围会丢失
- php - 使用查询mysql php插入多个数据
- python - 尝试将数据从excel文件导入RDS MySQL表,插入时间过长
- c# - .Net Core Azure AD Cloud 如何获取登录用户并访问他们的 Azure AD 安全组以确定他们是否在一个组中
- spring - 当我注销并尝试转到学生/列表时,Bean 属性“principal.username”不可读或具有无效的 getter 方法