这是我使用的方程式。 我尝试实现法线方程以仅使用1个自变量进行回归,并且效果很好。得出正确的系数。
但是,当我尝试使用多个自变量时,它得出了错误的系数。我没有更改代码中的任何内容。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
#Importing the dataset:
dataset = pd.read_csv("50_Startups.csv")
x = dataset.iloc[:, :3].values
y = dataset.iloc[:, -1].values
#Fitting the model with the library:
regressor = LinearRegression()
regressor.fit(x, y)
print(regressor.intercept_, regressor.coef_)
#Fitting the model with the normal equation:
#Putting a column filled with ones' for the intercept
x_1 = np.full((len(x), 1), 1)
x_mat = x.copy()
x_mat = np.concatenate((x_1, x_mat), axis=1)
#Implementing the function
step1 = np.linalg.inv(np.dot(x_mat.T, x_mat))
step2 = np.dot(step1, x_mat.T)
step3 = np.dot(step2, y)
print(step3)
输出:
50122.19298986523 [ 0.80571505 -0.02681597 0.02722806]
[ 5.01221930e+04 8.05715050e-01 -2.68159684e-02 2.72280648e-02]
^ ^ ^ ^
Intercept X1 X2 X3
有人可以帮我弄清楚为什么没有得到相同的输出吗?
谢谢。