繁体   English   中英

没有 Sklearn 的 X 和 Beta 的普通最小二乘线性回归预测

[英]Ordinary Least Squares linear regression predictions from X & Beta without Sklearn

如何从以下获得具有 Beta 和 X 值的预测:

数据

import numpy as np
x = np.array([20, 25, 28, 29, 30])
y = np.array([20000, 25000, 26000, 30000, 32000])

转换

# Reshape X    
X = x.reshape((-1, 1))

# Append ones to X:
X = np.append(np.ones((len(X), 1)), X, axis=1)

# Matrix X
X = np.matrix(X)

# Transpose X
XT = np.matrix.transpose(X)

# Matrix y
y = y.reshape((-1, 1))
y = np.matrix(y)

# Multiplication
XT_X = np.matmul(XT, X)
XT_y = np.matmul(XT, y)

# Betas
Betas = np.matmul(np.linalg.inv(XT_X), XT_y)

现在我需要获得对 plot 的预测,看看它的拟合程度:

import seaborn as sns
X = x
sns.regplot(X, prediction, fit_reg=False)
sns.regplot(X, y, fit_reg=False)

如何计算该预测,根据 X 值获得我的新 y?

谢谢!

它是X @ Betas

predictions = np.array(X @ Betas).ravel()
x_values = np.array(X[:, 1]).ravel()  # disregard the 1s column which is for bias
y_values = np.array(y).ravel()

sns.regplot(x_values, predictions, fit_reg=False, label="preds")
sns.regplot(x_values, y_values, fit_reg=False, label="truth")
plt.legend()

我不确定您为什么选择np.matrix 我认为您可以坚持使用np.array

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM