实验:线性回归实现(手动下载加利福尼亚州的房屋数据集)

实验目标

       本实验的目标是通过线性回归模型来预测加利福尼亚州各区域的房价,并对模型的性能进行评估。通过该实验,我们将掌握数据的加载与预处理、模型训练与测试、模型评估以及结果可视化的完整流程。

实验环境

o Python 3.x

o Scikit-learn库、Numpy库、Matplotlib库

o Jupyter Notebook

实验数据集

       使用 California Housing 数据集:此数据集包含加利福尼亚州的房屋数据,包括多个特征(如房间数量、人口、平均收入等)以及目标变量 MedHouseVal(房价中位数,单位为千美元)。

实验步骤

一、导入必要的库

import numpy as np  
import pandas as pd  
import matplotlib.pyplot as plt  
import seaborn as sns  
import os 
import tarfile
from sklearn.model_selection import train_test_split 
from sklearn.linear_model import LinearRegression  
from sklearn.metrics import mean_squared_error, r2_score 

二、 加载加利福尼亚房价数据集

 手动下载cal_housing.tgz文件

通过百度网盘分享的文件:cal_housing.tgz
链接:https://pan.baidu.com/s/1W_lyHP4ohbIUS-wv7wwCAw?pwd=1111 
提取码:1111
上面是下载的tgz文件,注意不要直接解压。

然后根据自己的文件存放位置来修改下面代码中的注释存放地址、解压地址和解压后文件存放地址。

tgz_path = 'cal_housing.tgz' //cal_housing.tgz文件存放地址
extracted_path = 'fetch_california_housing'//解压目标地址
with tarfile.open(tgz_path, 'r:gz') as tar:
    tar.extractall(path=extracted_path)
data_file_path = 'fetch_california_housing/CaliforniaHousing/cal_housing.data'//解压后cal_housing.data的地址
data = pd.read_csv(data_file_path, delim_whitespace=True, header=None)
print(data.head())
domain_file_path = 'fetch_california_housing/CaliforniaHousing/cal_housing.domain'//解压后cal_housing.domain的地址
with open(domain_file_path, 'r') as file:
    domain_info = file.read()
print(domain_info)

 三、将数据集转换为DataFrame并添加列名

将两个解压出来的文件结合起来 

data_file_path = 'fetch_california_housing/CaliforniaHousing/cal_housing.data'
data = pd.read_csv(data_file_path, header=None)
print(data.head())
column_names = [
    'longitude', 'latitude', 'housingMedianAge', 'totalRooms', 'totalBedrooms',
    'population', 'households', 'medianIncome', 'medianHouseValue'
]
data.columns = column_names
print(data.head())
X = data.drop('medianHouseValue', axis=1)  
y = data['medianHouseValue'] 

四、将目标值转为Series对

target = data['medianHouseValue']
print(target.head())

五、拆分数据集,80%用于训练,20%用于测试

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)
r2 = r2_score(y_test, y_pred)
print(f"Mean Squared Error (MSE): {mse}")
print(f"R² Score: {r2}")

十、可视化实际房价与预测房价的对比

plt.figure(figsize=(10, 6))//设置图表大小
plt.scatter(y_test, y_pred, color='blue', alpha=0.5)//绘制散点图表示实际值和预测值的关系
plt.xlabel('Actual House Prices', fontsize=12)//设置x轴标签
plt.ylabel('Predicted House Prices', fontsize=12)//设置y轴标签
plt.title('Actual vs Predicted House Prices', fontsize=14)//设置图表标题
plt.plot([min(y_test), max(y_test)], [min(y_test), max(y_test)], color='red', linestyle='--')//添加参考线,用于显示理想预测效果的对比
plt.grid(True)//显示网格
plt.xlim(min(y_test), max(y_test))
plt.ylim(min(y_test), max(y_test))
plt.show()//显示图表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值