用python写一个多元线性回归对波士顿房价的预测,外加可视化
时间: 2024-05-10 13:14:25 浏览: 107
好的,我可以帮你实现这个任务。我们可以使用Scikit-learn库来实现多元线性回归,并使用Matplotlib库进行可视化。
首先,我们需要加载波士顿房价数据集。Scikit-learn库已经内置了这个数据集,可以直接使用。我们可以使用以下代码加载数据集:
```python
from sklearn.datasets import load_boston
boston = load_boston()
```
接下来,我们可以将数据集分成特征和目标变量。特征变量包含13个房屋特征,例如平均房间数、犯罪率等。目标变量是房价。
```python
X = boston.data
y = boston.target
```
然后,我们可以使用Scikit-learn库的`train_test_split`函数将数据集分成训练集和测试集。我们将80%的数据用于训练,20%的数据用于测试。
```python
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
```
接下来,我们可以使用Scikit-learn库的`LinearRegression`类来实现多元线性回归,并使用训练集拟合模型。
```python
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
```
现在我们已经训练好了模型,可以使用测试集来评估模型的性能。
```python
y_pred = model.predict(X_test)
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_test, y_pred)
print("Mean Squared Error:", mse)
```
最后,我们可以使用Matplotlib库来进行可视化。我们可以使用散点图将测试集中的实际房价和预测的房价进行比较。
```python
import matplotlib.pyplot as plt
plt.scatter(y_test, y_pred)
plt.xlabel("Actual Prices")
plt.ylabel("Predicted Prices")
plt.title("Actual vs Predicted Prices")
plt.show()
```
完整的代码如下:
```python
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
boston = load_boston()
X = boston.data
y = boston.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print("Mean Squared Error:", mse)
plt.scatter(y_test, y_pred)
plt.xlabel("Actual Prices")
plt.ylabel("Predicted Prices")
plt.title("Actual vs Predicted Prices")
plt.show()
```
阅读全文