七步利用Sklearn实现加州房产价格预测,学习了解机器学习项目的整个流程

您所在的位置:网站首页 python房屋价格预测 七步利用Sklearn实现加州房产价格预测,学习了解机器学习项目的整个流程

七步利用Sklearn实现加州房产价格预测,学习了解机器学习项目的整个流程

2023-12-04 06:33| 来源: 网络整理| 查看: 265

Sklearn实现加州房产价格预测 一、导入需要用到的库 二、编写获取加州房产数据的函数 三、编写读取housing.csv的函数 四、利用Sklearn分割数据,获得训练数据集和测试数据集 (一)利用train_test_split (二)利用StratifiedShuffleSplit 五、数据处理 整个过程只关注分割得到的训练数据 (一)拆分数据 (二)清洗数据 (三)添加特征列 (四)特征缩放 (五)利用sklearn的Pipeline流水线化 六、选择并训练模型 (一)利用线性回归模型 (二)利用决策树回归模型 (三)利用随机森林回归模型 六、模型调参 (一)网格搜索 (二)随机搜索 七、用测试集评估模型 八、总结

一、导入需要用到的库 import numpy as np import pandas as pd import matplotlib as mpl import matplotlib.pyplot as plt import os import tarfile from six.moves import urllib 二、编写获取加州房产数据的函数

fetch_housing_data(),获取housing.csv数据,当调用fetch_housing_data(),就会在工作空间创建一个datasets/housing目录, 并且下载housing.tgz,解压housing.tgz

DOWNLOAD_ROOTDOWNLOA = "https://raw.githubusercontent.com/ageron/handson-ml/master/" HOUSING_PATH = "datasets/housing" HOUSING_URL = DOWNLOAD_ROOT + HOUSING_PATH + "/housing.tgz" def fetch_housing_data(housing_url=HOUSING_URL, housing_path=HOUSING_PATH): if not os.path.isdir(housing_path): os.makedirs(housing_path) tgz_path = os.path.join(housing_path, "housing.tgz") urllib.request.urlretrieve(housing_url, tgz_path) housing_tgz = tarfile.open(tgz_path) housing_tgz.extractall(path=housing_path) housing_tgz.close() fetch_housing_data() 三、编写读取housing.csv的函数

load_housing_data(),加载加州房产数据

def load_housing_data(housing_path=HOUSING_PATH): csv_path = os.path.join(housing_path, "housing.csv") return pd.read_csv(csv_path) housing=load_housing_data() 四、利用Sklearn分割数据,获得训练数据集和测试数据集 (一)利用train_test_split

关于train_test_split常用参数说明(详细可见sklearn文档说明):

test_size : float, int or None, optional (default=0.25) random_state :用于设置随机数生成器的种子,目的是保证当多次运行此段代码能够得到完全一样的分割结果,常设为42 shuffle:布尔值。默认为True,设为True时代表在分割数据集前先对数据进行洗牌(随机打乱数据集) stratify:默认为None.当shuffle=True时,才能不为None,如果不是None,则数据集以分层方式拆分,并使用此作为类标签。

from sklearn.model_selection import train_test_split train_set,test_set=train_test_split(housing,test_size=0.2,random_state=42) (二)利用StratifiedShuffleSplit

关于StratifiedShuffleSplit说明(详细可见sklearn文档说明): 这个函数主要是为了用于实现交叉验证(见后续),实现分层方式分割。 其创建的每一组划分将保证每组类比例相同与原数据集中各类的比例保持相同,即第一组训练数据类别比例为2:1,则后面每组类别都满足这个比例 参数说明: n_splits是将训练数据分成train/test对的组数,可根据需要进行设置,默认为10 (分层方式是指保持原数据集各个类的比例进行分割。比如原来数据集有两类A和B,A:B=5:2,那么在分割后训练数据集和测试数据集中A和B的比例也各自均为5:2。这样利用分层采样可以避免产生严重偏差) 为了进行分层分割,首先我们的数据集应该有类别。假设收入中位数是预测房价中位数非常重要的属性,我们根据多种收入分类。 首先看一下原数据的收入中位数分布 收入中位数分布然后我们对收入中位数进行处理: (1)首先将每个收入中位数除以1.5(用于限制收入分类的数量),用ceil对值舍入,向上取整(以产生离散的分类) (2)将所有大于5的收入中位数归入到类别5,小于5的收入中位数保持对应的数值作为其类别(1,2,3,4).关于where的使用见http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.where.html (需要尤其注意它的other参数,对于不满足cond参数的部分的值将变为other参数的值5.0)

housing["income_cat"] = np.ceil(housing["median_income"


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3