嗨,我对 mlr 的 scikit-learn 包有正确性问题(linear_model。线性回归)。在所有情况下,使用相同的数据进行互译,而不会截取
蟒蛇代码:
data = np.loadtxt(fname=file, delimiter='t')
X = data[:, 1:]
Y = data[:, 1]
mlr = LinearRegression(fit_intercept=False)
mlr.fit(X,Y)
print(mlr.coef_)
1.00000000e+00 6.20460347e-17 -1.82373860e-17 3.35782591e-19
7.92128777e-17 -1.04990677e-17 -1.15961796e-16 1.33629653e-15
R:
Y = data[,1]
X = data[,-1]
X = as.matrix(X)
m1 = lm(Y~X-1)
m1$coefficients
0.0546782907 0.0159731763 0.1312037785 -0.0507591565 0.1036469860
0.0050217163 -0.1006476385 0.0248998498 0.0081473528 -0.0111405854
C#(仅使用 accord.net 相当复杂的过程发布结果):
0.0546782906719276*x0 + 0.0159731763215885*x1 + 0.13120377853918*x2 + -0.0507591564748648*x3 + 0.103646986044143*x4 + 0.00502171630071436*x5
有什么原因吗?
TLDR;使用scikit-learn
、R
、C#
accord.net
来比较MLR系数,从SKlearn获得BS结果,而 accord.net 和R给出类似的结果
我已经
弄清楚了原因(这是我自己的虚拟错误)
错Y = data[:, 1]
!!
更改为:
Y = data[:, 0]
现在我得到了这个(这是正确的):
5.46782907e-02 1.59731763e-02 1.31203779e-01 -5.07591565e-02
1.03646986e-01 5.02171630e-03 -1.00647639e-01 2.48998498e-02