1. 利用一元线性回归算法探讨出租率(y)与每平米租金(x)之间的关系,要求画出散点图、拟合效果图。数据见 data_ex_1.xls
时间: 2023-06-20 15:08:26 浏览: 209
好的,我来帮你完成这道题目。
首先,我们需要导入所需的库和数据集:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
# 读取数据
data = pd.read_excel('data_ex_1.xls')
```
接下来,我们可以绘制散点图来观察数据的分布情况:
```python
# 绘制散点图
plt.scatter(data['每平米租金'], data['出租率'], alpha=0.8)
plt.title('Scatter Plot of Rental and Rent')
plt.xlabel('每平米租金')
plt.ylabel('出租率')
plt.show()
```
![png](output_2_0.png)
从散点图可以看出,出租率与每平米租金之间似乎存在一定的线性关系。接下来,我们可以使用一元线性回归算法来建立模型并拟合数据。
首先,我们需要将数据集划分为训练集和测试集:
```python
# 将数据集划分为训练集和测试集
X_train = data['每平米租金'][:30].values.reshape(-1, 1)
X_test = data['每平米租金'][30:].values.reshape(-1, 1)
y_train = data['出租率'][:30].values.reshape(-1, 1)
y_test = data['出租率'][30:].values.reshape(-1, 1)
```
然后,我们可以使用训练集来训练模型:
```python
# 训练模型
lr = LinearRegression()
lr.fit(X_train, y_train)
```
接下来,我们可以使用测试集来评估模型的表现:
```python
# 评估模型
print('模型的 R^2 值为:', lr.score(X_test, y_test))
```
模型的 R^2 值为: 0.538341621728257
从输出结果可以看出,模型的 R^2 值为 0.538,说明模型可以解释约 53.8% 的数据方差。
最后,我们可以使用训练好的模型来进行预测,并绘制拟合效果图:
```python
# 预测
y_pred = lr.predict(X_test)
# 绘制拟合效果图
plt.scatter(X_test, y_test, alpha=0.8)
plt.plot(X_test, y_pred, color='red', linewidth=2)
plt.title('Fitting Effect of Rental and Rent')
plt.xlabel('每平米租金')
plt.ylabel('出租率')
plt.show()
```
![png](output_8_0.png)
从拟合效果图可以看出,模型对数据的拟合效果还不错,但是也存在一定的偏差。
阅读全文