Python实现线性回归拟合并绘图

线性回归拟合并绘图

本题出自蓝桥云题库:https://www.lanqiao.cn/problems/78/learning/

介绍

线性回归是机器学习中最基础、最重要的方法之一。接下来,你需要根据题目提供的数据点,完成线性拟合,并绘制出图像。

目标

题目给出一个二维数组如下,共计 20 个数据样本。

data = [[5.06, 5.79], [4.92, 6.61], [4.67, 5.48], [4.54, 6.11], [4.26, 6.39],
        [4.07, 4.81], [4.01, 4.16], [4.01, 5.55], [3.66, 5.05], [3.43, 4.34],
        [3.12, 3.24], [3.02, 4.80], [2.87, 4.01], [2.64, 3.17], [2.48, 1.61],
        [2.48, 2.62], [2.02, 2.50], [1.95, 3.59], [1.79, 1.49], [1.54, 2.10], ]

你需要根据这 20 个样本,使用线性回归拟合,得到自变量系数及截距项。

### 回答1: 在Python中,我们可以使用多项式回归对波士顿房价数据集中的房间数(rm)和房屋中位数价值(medv)进行拟合绘图。 首先,我们需要导入所需的库和数据集。可以使用sklearn库的load_boston函数来加载波士顿房价数据集。 ```python from sklearn.datasets import load_boston import numpy as np import matplotlib.pyplot as plt # 加载波士顿房价数据集 boston = load_boston() X = boston.data y = boston.target # 提取房间数和房屋中位数价值作为特征变量 rm = X[:, 5] medv = y ``` 接下来,我们可以使用numpy库的polyfit函数来拟合多项式回归模型,并使用matplotlib库的scatter函数将原始数据点绘制在图像上。 ```python # 拟合多项式回归模型 coefs = np.polyfit(rm, medv, 3) polynomial = np.poly1d(coefs) # 绘制原始数据点 plt.scatter(rm, medv, color='blue', label='Original Data') # 绘制多项式回归曲线 x = np.linspace(np.min(rm), np.max(rm), 100) plt.plot(x, polynomial(x), color='red', label='Polynomial Regression') # 添加图例和标签 plt.legend() plt.xlabel('RM') plt.ylabel('MEDV') # 展示图形 plt.show() ``` 我们使用polyfit函数拟合了一个3次多项式回归模型,并使用poly1d函数创建了一个多项式对象来计算拟合曲线。然后,我们使用scatter函数绘制了原始数据点,并使用plot函数绘制了多项式回归曲线。最后,我们添加了图例和标签,并使用show函数展示了图形。 这样,我们就可以通过多项式回归来拟合并绘制波士顿房价数据集中房间数与房屋中位数价值之间的关系了。 ### 回答2: Python中有多种绘图库可以用于绘制多项式回归图,如matplotlib和seaborn。下面是使用matplotlib库绘制多项式回归波士顿rm与medv的步骤: 首先,我们需要导入所需的库和数据集。在这里,我们使用scikit-learn库中的波士顿房价数据集。假设数据集已经被加载到X和y变量中。 ``` import numpy as np import matplotlib.pyplot as plt from sklearn.preprocessing import PolynomialFeatures from sklearn.linear_model import LinearRegression from sklearn.datasets import load_boston # 加载波士顿房价数据集 boston = load_boston() X = boston.data[:, 5].reshape(-1, 1) # 使用房间数rm作为特征 y = boston.target.reshape(-1, 1) # 使用房价medv作为目标变量 ``` 接下来,我们需要进行多项式特征转换。我们可以使用sklearn库中的PolynomialFeatures类将输入特征X转换为多项式特征。 ``` # 将输入特征转换为3次多项式特征 poly = PolynomialFeatures(degree=3) X_poly = poly.fit_transform(X) ``` 然后,我们需要训练线性回归模型,并预测目标变量。 ``` # 训练线性回归模型 model = LinearRegression() model.fit(X_poly, y) # 预测目标变量 y_pred = model.predict(X_poly) ``` 最后,我们可以使用matplotlib库绘制散点图和曲线图以显示多项式回归结果。 ``` # 绘制散点图 plt.scatter(X, y, color='b', label='Actual') # 绘制曲线图 plt.plot(X, y_pred, color='r', label='Predicted') plt.xlabel('rm') plt.ylabel('medv') plt.title('Polynomial Regression') plt.legend() plt.show() ``` 这样就可以得到一个显示了波士顿rm与medv的多项式回归图。请注意,根据具体的多项式次数和模型的性能,您可能需要尝试不同的多项式次数来获得更好的拟合效果。 ### 回答3: 波士顿rm与medv是两个特征,分别表示波士顿地区的平均房间数和房屋中位数价格。我们可以使用多项式回归模型来研究这两个特征之间的关系,并绘制出相关的图表。 首先,我们需要将数据导入到Python的数据分析库中,比如pandas。然后,我们可以使用该库函数来读取并处理数据,选取rm和medv的列并进行分析。 接下来,我们可以使用sklearn库来建立多项式回归模型,用rm作为自变量,medv作为因变量。通过调整多项式的阶数,我们可以探索不同阶数对回归结果的影响。 在绘制图表之前,我们需要对数据进行拟合和预测,然后得到模型的系数和截距。再将自变量和因变量的散点图绘制出来,并用回归模型的曲线拟合散点图。 最后,我们可以在图表上添加标题、坐标轴标签和图例,以便更好地理解和解释回归模型的结果。 总结一下,使用Python的pandas、sklearn和matplotlib库,我们可以进行多项式回归分析,并通过绘图来显示波士顿的rm和medv之间的关系。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.郑先生_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值