站内搜索

搜索

手游源码-游戏源码-棋牌源码资源网-亲测源码-游戏搭建-破解游戏-网站源码-qq技术

100金币/天 购买

2018年8月24日波士顿房价预测项目第3篇文章(图)

16

主题

17

帖子

0

金币

红钻会员

Rank: 2

积分
92
发表于 2022-3-3 15:59:16 | 显示全部楼层 |阅读模式
2018年8月24日笔记这是作者在波士顿房价预测项目的第3篇文章,在查看此篇文章之前房产评估源码,请确保已经阅读前2篇文章。第2篇文章链接: 0.打开 不知道怎么打开的朋友请查看我的入门指南文章: 1.准备数据 网站波士顿房价项目链接:网页内容如下图所示: image.png 查看项目评分标准,如下图所示: image.png 从上图我们可以看出,该项目使用RMSE指标评估。RMSE是rootmeanerror的简写,中文叫做均方根误差。上图中的公式有错误,正确应该如下图所示: image.png 2.作者的最高分 波士顿房价预测项目是2016年的项目房产评估源码,现在已经结束。所以读者可以先熟悉提交答案的流程,作者提供自己的最高分文件。提交文件下载链接:密码:b8jm提交结果如下图所示: image.png 从上图的结果可以看到,作者的最高分有3.02分,可以排到第5名。后面的章节讲述提升模型回归效果,即降低RMSE的过程。 3.下载数据集 如下图所示,下载红色箭头标示的3个文件。下载完成后,就可以开始编程。 image.png 4.加载数据集 train.csv文件中的表格有15个字段,第1个字段是ID,最后1个字段是预测目标值。用df.iloc[:,1:-1]取除了第1个字段和最后1个字段的其他字段。

    import pandas as pd
def dataProcessing(df):
    field_cut = {
    'crim' : [0,10,20, 100],
    'zn' : [-1, 5, 18, 20, 40, 80, 86, 100], 
    'indus' : [-1, 7, 15, 23, 40],
    'nox' : [0, 0.51, 0.6, 0.7, 0.8, 1],
    'rm' : [0, 4, 5, 6, 7, 8, 9],
    'age' : [0, 60, 80, 100],
    'dis' : [0, 2, 6, 14],
    'rad' : [0, 5, 10, 25],
    'tax' : [0, 200, 400, 500, 800],
    'ptratio' : [0, 14, 20, 23],
    'black' : [0, 100, 350, 450],
    'lstat' : [0, 5, 10, 20, 40]
    }
    cut_df = pd.DataFrame()
    for field in field_cut.keys():
        cut_series = pd.cut(df[field], field_cut[field], right=True)
        onehot_df = pd.get_dummies(cut_series, prefix=field)
        cut_df = pd.concat([cut_df, onehot_df], axis=1)
    new_df = pd.concat([df, cut_df], axis=1)
    return new_df
df = pd.read_csv('train.csv')
field_df = df.iloc[:,1:-1]
feature_df = dataProcessing(field_df)

根据网上的资料显示,有部分异常值的预测目标值为50。清除异常值,代码如下:

    X = feature_df
y = df['medv'].values
print(X.shape)
X = X[y!=50]
y = y[y!=50]
print(X.shape)

上面一段代码的运行结果如下: (333,61)(322,61) 5.模型训练

    from xgboost import XGBRegressor
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import ShuffleSplit
xgb_model = XGBRegressor(nthread=7)
cv_split = ShuffleSplit(n_splits=6, train_size=0.7, test_size=0.2)
grid_params = dict(
    max_depth = [4, 5, 6, 7],
    learning_rate = np.linspace(0.03, 0.3, 10),
    n_estimators = [100, 200]
)
grid = GridSearchCV(xgb_model, grid_params, cv=cv_split, scoring='neg_mean_squared_error')
grid.fit(X, y)

查看模型的最优参数和最优rmse指标,代码如下:

    print(grid_model.best_params_)
print('rmse:', (-grid_model.best_score_) ** 0.5)

上面一段代码的运行结果如下: {'':0.03,'':6,'':200}rmse:2.8854 利用训练好的结果,对测试集做回归预测,代码如下:

    predict_df = pd.read_csv('test.csv')
predict_X = dataProcessing(predict_df.iloc[:,1:]).values
predict_y = grid_model.predict(predict_X)
save_df = pd.DataFrame({
    'ID' : predict_df.ID,
    'medv' : predict_y
})
save_df.to_csv('xgb_boston_submission1.csv', index=False)

6.提交作答文件 点击下图红色箭头标示处,界面如下图所示。分为2步:1.上传作答文件;2.对此次作答做简单的描述。 image.png 作者的作答文件命名为n1.csv,如下图所示。重新运行的提交分数为3.10天外神坛源码网,分数略有下降,但是仍能进入前5。 image.png
【天外神坛】免责声明及帮助
1.重要:如果遇到隐藏内容回复后显示为代码状态,直接刷新一下页面即可解决此问题。
2.本文部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。
3.若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
4.如果本站有侵犯、不妥之处的资源,请在网站右边客服联系我们。将会第一时间解决!
5.本站所有内容均由互联网收集整理、网友上传,仅供大家参考、学习,不存在任何商业目的与商业用途。
6.本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

老群被封加此新群不迷路。
上个主题 下个主题 快速回复 返回列表 客服中心 搜索 QQ加群
上个主题 下个主题 快速回复 返回列表 客服中心 搜索 QQ加群

QQ|Archiver|小黑屋|天外神坛

湘ICP备2021015333号

Powered by 天外神坛 X3.4 © 2020-2022 天外神坛