机器学习项目:房价预测

  • XGBoost回归预测
import pandas as pd
from sklearn.model_selection import train_test_split # 导入数据分割函数库
from sklearn.model_selection import cross_val_score
from sklearn.metrics import mean_absolute_error # 导入误差计算函数库
from sklearn.impute import SimpleImputer # 导入简单插补函数库
from xgboost import XGBRegressor
from sklearn.ensemble import RandomForestRegressor # 导入随机森林模型
from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline

# 导入数据
melbourne_file_path = r"D:\xio习\python\python数据分析\案例\房价预测\melbourne-housing-snapshot\melb_data.csv"
data = pd.read_csv(melbourne_file_path)

y = data.Price
X = data.drop(['Price'], axis=1)

# 分割数据为训练集和测试集
X_train_full, X_valid_full, y_train, y_valid = train_test_split(X, y, train_size=0.8, test_size=0.2, random_state=0)

# 筛选基数低的类别列
categorical_cols = [cname for cname in X_train_full.columns 
                        if X_train_full[cname].nunique() < 10 and 
                        X_train_full[cname].dtype == "object"]

# 筛选数值列
numerical_cols = [cname for cname in X_train_full.columns if X_train_full[cname].dtype in ['int64', 'float64']]

# 只保留选中的列
my_cols = categorical_cols + numerical_cols
X_train = X_train_full[my_cols].copy()
X_valid = X_valid_full[my_cols].copy()

##### 定义预处理步骤
# 处理数值数据
numerical_transformer = SimpleImputer(strategy='constant')

# 处理分类变量
categorical_transformer = Pipeline(steps=[
    ('imputer', SimpleImputer(strategy='most_frequent')),
    ('onehot', OneHotEncoder(handle_unknown='ignore'))
    ])

# 对数值和分类变量进行捆绑预处理
preprocessor = ColumnTransformer(
    transformers=[
        ('num', numerical_transformer, numerical_cols),
        ('cat', categorical_transformer, categorical_cols)
    ])

##### 定义模型
model = XGBRegressor(n_estimators=870, learning_rate=0.05,  n_jobs=4) # 修改参数以提高模型准确度

##### 创建并评估管道
# 在管道中捆绑预处理和建模代码
my_pipeline = Pipeline(steps=[('preprocessor', preprocessor),
                              ('model', model)
                             ])

# 应用管道
my_pipeline.fit(X_train, y_train)

preds = my_pipeline.predict(X_valid)

# 交叉验证评估模型
scores = -1 * cross_val_score(my_pipeline, X, y,
                              cv=5,
                              scoring='neg_mean_absolute_error')

print("MAE scores:\n", scores)

print("Average MAE score (across experiments):")
print(scores.mean())
  • 运行结果
    在这里插入图片描述
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
房价预测项目实战是一个基于机器学习回归模型的项目,旨在通过分析房屋的基本信息来预测房屋的销售价格。该项目使用了美国King County的房屋销售数据,包括2014年5月至2015年5月的数据,其中包含了房屋的销售日期、价格、卧室数、浴室数、房屋面积、停车面积、楼层数、房屋评分、建筑面积、地下室面积、建筑年份、修复年份、纬度和经度等14个字段。 在实战中,我们关注房价与其他变量之间的关系,通过计算变量之间的相关性,选取了与房价相关性最高的几个变量,例如车库面积和房子类型。这样可以帮助我们找到与房价变化密切相关的因素,从而更好地进行预测。 在处理数据时,我们需要考虑到一些信息是重复或非必要的,例如房屋泳池的大小或者买未交付的房子的情况。因此,我们只需关注那些与预测房价相关且有意义的信息,以减少特征表示的难度和计算量。 通过可视化分析数据,我们可以更好地理解变量之间的关系,并根据相关性选择最有价值的特征来构建回归模型。最终的目标是通过计算平均预测误差来衡量回归模型的优劣,平均预测误差越小,说明回归模型越好。 总结来说,房价预测项目实战是一个利用机器学习回归模型来预测房价的项目,通过分析和选择与房价相关的变量,构建模型,并通过计算误差来评估模型的准确性。这个项目可以帮助我们更好地理解房价的变动和影响因素,并提供有价值的预测信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [机器学习实战:房价预测](https://blog.csdn.net/jlf7026/article/details/84630414)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [机器学习:房价预测项目实战](https://blog.csdn.net/nofaliure/article/details/128292857)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

From Star.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值