使用线性回归进行波士顿房价预测python
时间: 2023-11-11 07:03:13 浏览: 137
这里提供了两个基于线性回归实现波士顿房价预测的Python源码大作业,它们都采用了梯度下降法进行模型训练。你可以下载其中一个源码并运行,以得到波士顿房价的预测结果。在运行之前,你需要确保你已经安装了Python和相关的第三方库,例如NumPy和Pandas等。
代码中主要包含以下几个步骤:
1. 数据预处理:包括数据读取、数据清洗、特征选择等。
2. 模型训练:采用梯度下降法对线性回归模型进行训练。
3. 模型评估:使用均方误差(MSE)和R平方(R2)等指标对模型进行评估。
4. 预测结果输出:将预测结果输出到CSV文件中。
<<代码示例>>
```python
# 导入相关库
import numpy as np
import pandas as pd
# 读取数据
data = pd.read_csv('boston.csv')
# 数据清洗
data.dropna(inplace=True)
# 特征选择
X = data[['RM', 'LSTAT', 'PTRATIO']]
y = data['MEDV']
# 数据归一化
X = (X - X.mean()) / X.std()
y = (y - y.mean()) / y.std()
# 添加偏置项
X['bias'] = 1
# 初始化参数
theta = np.zeros(X.shape[1])
# 定义梯度下降函数
def gradient_descent(X, y, theta, alpha, num_iters):
m = len(y)
J_history = np.zeros(num_iters)
for i in range(num_iters):
h = X.dot(theta)
theta = theta - alpha * (1 / m) * (X.T.dot(h - y))
J_history[i] = np.sum((h - y) ** 2) / (2 * m)
return theta, J_history
# 训练模型
alpha = 0.01
num_iters = 1000
theta, J_history = gradient_descent(X.values, y.values, theta, alpha, num_iters)
# 预测结果
X_test = pd.DataFrame({'RM': [6.5], 'LSTAT': [10], 'PTRATIO': [15], 'bias': [1]})
X_test = (X_test - X.mean()) / X.std()
y_pred = X_test.dot(theta)
# 输出预测结果
print('预测结果为:', y_pred.values[0])
# 保存预测结果到CSV文件中
result = pd.DataFrame({'预测结果': y_pred})
result.to_csv('result.csv', index=False)
# 模型评估
from sklearn.metrics import mean_squared_error, r2_score
y_pred_train = X.dot(theta)
print('均方误差为:', mean_squared_error(y, y_pred_train))
print('R平方为:', r2_score(y, y_pred_train))
```
阅读全文