首先,请看题。
这题里面有5组已知数据,和一组未知数据。
我们把等号左右两遍用X和y表示,用四元线性回归解题。
首先,我们导入需要用的库。
import numpy as np
import sklearn
from sklearn.linear_model import LinearRegression
然后,构建X和y
X = np.array([
[1,1,1,1],
[1,2,8,9],
[2,2,5,6],
[3,3,8,8],
[9,0,9,0]
])
y = np.array([0,3,1,4,4])
我们新建一个线性回归对象,并把数据给他,训练一个模型。
model = LinearRegression()
model.fit(X, y)
然后,我们反过来,把X带入模型,看看答案是否和y一致
model.predict(X)
这是输出答案:
array([-3.55271368e-15, 3.00000000e+00, 1.00000000e+00, 4.00000000e+00,
4.00000000e+00])
这不,和y一样。说明我们的思路对了,这就是线性回归。
我们还可以看看线性回归的系数:
print(model.coef_)
print(model.intercept_)
系数是
array([-0.95348837, 1.73255814, 1.52325581, -1.1744186 ])
-1.1279069767441907
其中coef表示coefficient,即 x 1 , x 2 , x 3 , x 4 x_1, x_2, x_3, x_4 x1,x2,x3,x4, 的系数,intercept_是截距。
也就是说,我们找到的规律是
y = − 0.95348837 ∗ x 1 + 1.73255814 ∗ x 2 + 1.52325581 ∗ x 3 − 1.1744186 ∗ x 4 − 1.1279069767441907 y=-0.95348837*x_1 +1.73255814 * x_2 + 1.52325581 * x_3 -1.1744186 * x_4 - 1.1279069767441907 y=−0.95348837∗x1+1.73255814∗x2+1.52325581∗x3−1.1744186∗x4−1.1279069767441907
有了模型,就可以把最后一组数据带入模型了:
model.predict([[1,8,6,8]])
答案是
array([11.52325581])
好了,一道小学数学解决了。
机器学习的本质,就是利用已知的数据,找到规律,然后用这个规律去预测未知的数据。