1.将房价数据划分测试集和训练集(三种方法)。 2.利用下述工具构建多元线性回归模型,并对模型进行泛化能力评估。 3.工具:scikitlearn; numpy; pandas; matplotlib
时间: 2024-11-27 16:22:36 浏览: 5
特殊矩阵-清华大学严蔚敏数据结构
1. 将房价数据划分为训练集和测试集有以下几种常见方法:
- **随机划分**:通过Python库如`sklearn.model_selection.train_test_split`,可以设置固定比例,比如70%的数据作为训练集,剩下的30%作为测试集。
- **时间序列划分**:如果数据按时间顺序排列,可以使用最近的数据作为测试集,旧的数据用于训练,保证测试结果不受未来信息影响。
- **交叉验证**:K-Fold交叉验证会将数据分多次(如5折),每次把一部分作为验证集,其余作为训练集,最后汇总所有结果。
2. 使用`scikit-learn`、`numpy`、`pandas`和`matplotlib`构建多元线性回归模型并评估泛化能力通常步骤如下:
a. 导入所需库:
```python
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt
```
b. 加载和预处理数据:
```python
data = pd.read_csv('house_prices.csv') # 假设数据来自CSV文件
X = data.drop('price', axis=1) # 特征列
y = data['price'] # 目标变量
# 划分特征和目标变量
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
```
c. 构建模型并拟合数据:
```python
model = LinearRegression()
model.fit(X_train, y_train)
```
d. 预测和评估:
```python
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
# 可视化结果
plt.scatter(y_test, y_pred)
plt.xlabel('实际价格')
plt.ylabel('预测价格')
plt.show()
print(f"Mean Squared Error (MSE): {mse}")
print(f"R^2 Score: {r2}")
```
这里`mean_squared_error`衡量误差,`r2_score`表示模型解释数据方差的能力。
3.
阅读全文