学习笔记2:线性回归
线性回归
对于房价预测这一情景,采用线性回归:
训练集:用于训练模型,让模型学习规律的数据
输入变量x,也叫做特征或输入特征,输出变量y,也叫做目标变量。
每一组数据叫做一个训练样本,用m表示训练样本的总数,用(x,y)表示单个训练样本
平方误差代价函数:
尝试将J变得最小,这样模型拟合的越好
简单线性回归模型代码的编写
import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression #创建线性回归自变量 x_train=np.array([1.0,2.0,3.0]); #创建对应因变量 y_train=np.array([279.0,510.0,680.0]); #打印检查 f_string输出格式 print(f"x_train={x_train}"); print(f"y_train={y_train}"); #输出对应元素 i=0; x_i=x_train[i] y_i=y_train[i] print(f"(x^({i}),y^({i}))=({x_i},{y_i})") #绘制散点图 #marker='x'数据点是叉 c='r'颜色红 plt.scatter(x_train,y_train,marker='x',c='r',label='训练数据') #设置标题和标签 plt.title("Housing Prices") #y轴标签 千美元为单位 plt.ylabel('Price(in 1000s of dollars)') #x轴标签 千平方英尺 plt.xlabel('Size(1000 sqft)') model = LinearRegression() #MODEL.FIT 要求 x 是二维数组 #-1自动计算大小 1:数组1列 x_train_2d = x_train.reshape(-1, 1) model.fit(x_train_2d, y_train) w = model.coef_[0] # 斜率(权重) 两个特征中第一个的斜率 b = model.intercept_ # 截距(偏置) print(f"模型公式: y = {w:.2f} * x + {b:.2f}") #预测 x_new = np.array([[1.5]]) # 1500 平方英尺的房子 y_pred = model.predict(x_new) print(f"1500 sqft 的房子预测价格: ${y_pred[0] * 1000:.2f}") #画出直线 x_line = np.array([[0], [3]]) # 从 0 到 3000 sqft y_line = model.predict(x_line) plt.plot(x_line, y_line, c='b', label='拟合直线') plt.legend() #显示图例 plt.show()输出图像:
