1.线性模型是自然界最简单的模型之一,它描述了一个(或多个)自变量对另一个因变量的影响是呈简单的比例、线性关系.
例如:住房每平米单价为1万元,100平米住房价格为100万元,120平米住房为120万元。
线性模型在二维空间内表现为一条直线,在三维空间内表现为一个平面,更高维度下的线性模型很难用几何图形来表示(称为超平面):
4.线性回归的代码实现:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
# 生成模拟数据
np.random.seed(0) # 为了可复现性设置随机种子
X = 2 * np.random.rand(100, 1) # 生成100个0到2之间的随机数
y = 4 + 3 * X + np.random.randn(100, 1) # 真实的线性关系是 y = 4 + 3x 加上一些噪声
# 将X和y的维度转换为二维数组,因为scikit-learn的输入要求
X_b = np.c_[np.ones((100, 1)), X] # 添加x0 = 1 到每个实例
# 使用scikit-learn的LinearRegression
model = LinearRegression()
model.fit(X_b, y)
# 预测
X_new = np.array([[0], [2]])
X_new_b = np.c_[np.ones((2, 1)), X_new] # 同样添加x0 = 1
y_predict = model.predict(X_new_b)
# 绘制数据点
plt.plot(X, y, "b.")
# 绘制最佳拟合线
plt.plot(X_new, y_predict, "r-", linewidth=2, label="Predictions")
plt.xlabel("$x_1$", fontsize=18)
plt.ylabel("$y$", rotation=0, fontsize=18)
plt.title("Linear Regression")
plt.legend(loc="upper left")
plt.show()
5.代码的可视化结果: