机器学习与人工智能基础:价值估算(第八章-使用估值神器)

使用估值神器
Using the Estimator in a Real-World Program


前言叨B叨

大家上周末剁手开心哇? 来来来, 为了更开心得剁手认真学习.

本章包含以下内容:

1. 用新的数据来估价
2. 用新的数据来训练分类器
3. 然后呢?

正文

1.用新的数据来估

现在我们已经训练和测试了我们的模型,让我们正式将其投入使用。打开make_predictions.py。在我们过这个例子的时候,你会注意到,即使这个文件包含估计房屋价值所需的所有逻辑,实际的代码也只有几行。这是因为所有的逻辑都已经由机器学习算法创建并保存在我们的模型中了。我们只需要加载模型,传入数据并运行。

from sklearn.externals import joblib

# Load the model we trained previously
model = joblib.load('trained_house_classifier_model.pkl')

首先,我们加载之前训练过的梯度增强模型。我们只是调用joblib.load并传入文件名。接下来,我们列出了我们想要评估的特定房屋的所有属性。


# For the house we want to value, we need to provide the features in the exact same
# arrangement as our training data set.
house_to_value = [
    # House features
    2006,   # year_built
    1,      # stories
    4,      # num_bedrooms
    3,      # full_bathrooms
    0,      # half_bathrooms 
    2200,   # livable_sqft
    2350,   # total_sqft
...
    True,   # has_central_heating
    True,   # has_central_cooling
    
    # Garage type: Choose only one
    0,      # attached
    0,      # detached
    1,      # none
    
    # City: Choose only one
    0,      # Amystad
    1,      # Brownport
    0,      # Chadstad
    0,      # Clarkberg
...
    0,      # West Gregoryview
    0,      # West Lydia
    0       # West Terrence
]

# scikit-learn assumes you want to predict the values for lots of houses at once, so it expects an array.
# We just want to look at a single house, so it will be the only item in our array.
homes_to_value = [
    house_to_value
]

我们需要按照与我们用来训练模型的训练数据完全相同的顺序创建一个具有相同特征的数组。这意味着这里的数据需要反映我们所做的任何特征工程(feature engineering )变更。所以我们删除的字段和我们用one-hot编码添加的字段在这里反映出来。我已经提前定义了2006年建造的一个假想房屋的所有参数,包括它的基本特征,车库的类型以及它所在的城市。接下来,我们需要创建一系列的房屋值。 Scikit-learn假定你想要一次对多个项目进行预测,所以它期望一系列的房屋价值。
由于我们现在只想给一个房子估价,所以我们只创建了一组值house_to_value,然后放入这个homes_to_value数组。为了预测数据,我们调用model.predict并传入特征数组。

# Run the model and make a prediction for each house in the homes_to_value array
predicted_home_values = model.predict(homes_to_value)

# Since we are only predicting the price of one house, just look at the first prediction returned
predicted_value = predicted_home_values[0]

print("This house has an estimated value of ${:,.2f}".format(predicted_value))

结果是一个包含每个房屋的价格预测的数组。由于我们刚刚只传入了一个房子的信息,所以只需要拿第一个索引的值然后打印。
对于这个房子,它预测587,000美元的价格。但是,让我们看看如果我们改变一些特征值会发生什么。
现在让我们来回顾一下2006年到1973年建成的一年。现在让我们重新运行它,看看如何改变价值。右键单击运行,现在我们可以看到价值下降到$ 454,000。看起来房子龄很重要。现在如果我们改变一些其他的属性呢?如果我们说这个房子有一个附加的车库,现在让我们重新运行它,看看如何改变价值。现在价值达到了49万美元。
那城市呢?让我们改变房子的城市,重新运行。现在房子的价值大幅下降到386,000美元。看起来地理位置很重要。您可以尝试自己调整这些值,看看它是如何影响最终价格的。现在我们有一个完整的工作体系。如果我们用一个很好的用户界面来替换这个脚本,我们会有一个非常酷的真实产品。

2.用新的数据来训练分类器

我们刚刚完成了建立和使用机器学习模型。恭喜!但请记住,我们的机器学习模型只与我们所使用的数据匹配。由于房价总是在变化,随着市场的变化,这个模型很快就会过时。所以当底层数据发生变化时,我们需要重新训练模型。我们可以使用之前使用的trainmodel.py文件重新训练我们的模型。我们只需要提供一个更新的数据集与更近的房屋销售数据。

让我们来看看。首先,我们在用原始数据集训练估计器时得到的准确性结果。测试集的错误是$ 59,000左右。让我们看看当我们用更新的数据集重新训练模型时会发生什么。现在,让我们改变我们正在使用的数据集。我们只需要更新我们正在加载的数据文件的名称。我提供了第二个数据文件叫做ml_house_data_set_updated.csv。这个数据集已经更新了房价。让我们重新运行脚本,看看我们用这个数据集得到的结果。执行了这个数据集,测试错误就更高了。大概是63,000美元。如果我们回头看,以前只有59,000美元。这是一个约4000美元的错误增加。

在现实世界的系统中,对天气或交通等频繁变化的事物进行建模,通常会建立一个自动化的训练流程然后定期运行,如每天或每周。这使得系统随着数据的变化而保持最新。但在更换旧模型之前,检查新模型的准确性是非常重要的。
有时训练数据变化很大,以至于旧的模型不再有效。您的自动化训练过程应检查新模型的错误率,并提醒您在新模型执行得有问题的时候进行干预。

3.然后呢?

我建议大家尝试使用自己的数据覆盖的概念。 之后,您可以尝试使用本课程中使用的梯度增强算法之外的不同机器学习算法。 支持向量回归机是另一个可以在scikit-learn中进行实验的流行算法。 如果您将机器学习用于解决大规模问题,则可以尝试xgboost库。 Xgboost是Python和其他几种编程语言的附加库,它提供了梯度提升的快速实现,可以在多台计算机上分布。 最后,无论您使用哪种编程语言,本课程中的所有基本概念都适用于任何机器学习库或工具包。
Amazon AWS和Microsoft Azure等云服务提供商现在提供机器学习工具,可以让您在云中构建模型。

结语

自此, 机器学习与人工智能基础:价值估算就全部讲完, 之后我会物色更多的相关教程, 敬请期待!

你的 关注-收藏-转发 是我继续分享的动力!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容