Python线性回归实战:从一维直线拟合到三维平面预测
本文通过Python sklearn库演示线性回归的两种典型应用场景。首先利用历史房屋面积与价格数据,建立一维线性模型进行直线拟合与价格预测;其次通过虚拟数据构建三维空间平面模型,展示多变量线性方程的系数求解与预测方法。代码包含数据预处理、模型训练、参数获取及可视化绘图完整流程,适合机器学习初学者参考。
在Python中进行线性回归分析十分便捷,开发者可直接调用现成的科学计算库,例如numpy.linalg.lstsq、scipy.stats.linregress或pandas.ols等模块来实现。
本文重点介绍使用sklearn库中的linear_model.LinearRegression类,该模块支持任意维度的数据输入,功能强大且使用简便。
一、二维直线拟合示例
基础概念:线性方程形式为y=a*x+b,该方程在二维平面上表示一条直线。
以下案例基于房屋面积与房屋价格的历史数据集,构建线性回归模型。
模型建立后,即可根据给定的房屋面积数据预测对应的房屋价格。数据来源见下文代码部分。
import pandas as pd from io import StringIO from sklearn import linear_model import matplotlib.pyplot as plt # 房屋面积与价格历史数据(csv文件) csv_data = 'square_feet,price\n150,6450\n200,7450\n250,8450\n300,9450\n350,11450\n400,15450\n600,18450\n' # 读入dataframe df = pd.read_csv(StringIO(csv_data)) print(df) # 建立线性回归模型 regr = linear_model.LinearRegression() # 拟合 regr.fit(df['square_feet'].reshape(-1, 1), df['price']) # 注意此处.reshape(-1, 1),因为X是一维的! # 不难得到直线的斜率、截距 a, b = regr.coef_, regr.intercept_ # 给出待预测面积 area = 238.5 # 方式1:根据直线方程计算的价格 print(a * area + b) # 方式2:根据predict方法预测的价格 print(regr.predict(area)) # 画图 # 1.真实的点 plt.scatter(df['square_feet'], df['price'], color='blue') # 2.拟合的直线 plt.plot(df['square_feet'], regr.predict(df['square_feet'].reshape(-1,1)), color='red', linewidth=4) plt.show()

二、三维平面拟合示例
基础概念:线性方程形式为z=a*x+b*y+c,该方程在三维空间中表示一个平面。
由于缺乏公开的真实多维数据集,此处采用人工生成的虚拟数据进行演示。
import numpy as np from sklearn import linear_model from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt xx, yy = np.meshgrid(np.linspace(0,10,10), np.linspace(0,100,10)) zz = 1.0 * xx + 3.5 * yy + np.random.randint(0,100,(10,10)) # 构建成特征、值的形式 X, Z = np.column_stack((xx.flatten(),yy.flatten())), zz.flatten() # 建立线性回归模型 regr = linear_model.LinearRegression() # 拟合 regr.fit(X, Z) # 不难得到平面的系数、截距 a, b = regr.coef_, regr.intercept_ # 给出待预测的一个特征 x = np.array([[5.8, 78.3]]) # 方式1:根据线性方程计算待预测的特征x对应的值z(注意:np.sum) print(np.sum(a * x) + b) # 方式2:根据predict方法预测的值z print(regr.predict(x)) # 画图 fig = plt.figure() ax = fig.gca(projection='3d') # 1.画出真实的点 ax.scatter(xx, yy, zz) # 2.画出拟合的平面 ax.plot_wireframe(xx, yy, regr.predict(X).reshape(10,10)) ax.plot_surface(xx, yy, regr.predict(X).reshape(10,10), alpha=0.3) plt.show()
模型拟合效果如图所示。

总结
以上即为Python线性回归代码示例的全部内容,希望能为读者提供帮助。感兴趣的朋友可继续查阅本站其他文章:
Python八大排序算法速度实例对比
详解K-means算法在Python中的实现
Python算法之图的遍历
若内容存在不足,欢迎留言指正。感谢各位读者对本站的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













