機器學習與人工智能基礎:價值估算(第八章-使用估值神器)

使用估值神器
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年建成的一年?,F在讓我們重新運行它,看看如何改變價值。右鍵單擊運行,現在我們可以看到價值下降到$ 454,000。看起來房子齡很重要。現在如果我們改變一些其他的屬性呢?如果我們說這個房子有一個附加的車庫,現在讓我們重新運行它,看看如何改變價值?,F在價值達到了49萬美元。
那城市呢?讓我們改變房子的城市,重新運行?,F在房子的價值大幅下降到386,000美元??雌饋淼乩砦恢煤苤匾?。您可以嘗試自己調整這些值,看看它是如何影響最終價格的。現在我們有一個完整的工作體系。如果我們用一個很好的用戶界面來替換這個腳本,我們會有一個非常酷的真實產品。

2.用新的數據來訓練分類器

我們剛剛完成了建立和使用機器學習模型。恭喜!但請記住,我們的機器學習模型只與我們所使用的數據匹配。由于房價總是在變化,隨著市場的變化,這個模型很快就會過時。所以當底層數據發生變化時,我們需要重新訓練模型。我們可以使用之前使用的trainmodel.py文件重新訓練我們的模型。我們只需要提供一個更新的數據集與更近的房屋銷售數據。

讓我們來看看。首先,我們在用原始數據集訓練估計器時得到的準確性結果。測試集的錯誤是$ 59,000左右。讓我們看看當我們用更新的數據集重新訓練模型時會發生什么?,F在,讓我們改變我們正在使用的數據集。我們只需要更新我們正在加載的數據文件的名稱。我提供了第二個數據文件叫做ml_house_data_set_updated.csv。這個數據集已經更新了房價。讓我們重新運行腳本,看看我們用這個數據集得到的結果。執行了這個數據集,測試錯誤就更高了。大概是63,000美元。如果我們回頭看,以前只有59,000美元。這是一個約4000美元的錯誤增加。

在現實世界的系統中,對天氣或交通等頻繁變化的事物進行建模,通常會建立一個自動化的訓練流程然后定期運行,如每天或每周。這使得系統隨著數據的變化而保持最新。但在更換舊模型之前,檢查新模型的準確性是非常重要的。
有時訓練數據變化很大,以至于舊的模型不再有效。您的自動化訓練過程應檢查新模型的錯誤率,并提醒您在新模型執行得有問題的時候進行干預。

3.然后呢?

我建議大家嘗試使用自己的數據覆蓋的概念。 之后,您可以嘗試使用本課程中使用的梯度增強算法之外的不同機器學習算法。 支持向量回歸機是另一個可以在scikit-learn中進行實驗的流行算法。 如果您將機器學習用于解決大規模問題,則可以嘗試xgboost庫。 Xgboost是Python和其他幾種編程語言的附加庫,它提供了梯度提升的快速實現,可以在多臺計算機上分布。 最后,無論您使用哪種編程語言,本課程中的所有基本概念都適用于任何機器學習庫或工具包。
Amazon AWS和Microsoft Azure等云服務提供商現在提供機器學習工具,可以讓您在云中構建模型。

結語

自此, 機器學習與人工智能基礎:價值估算就全部講完, 之后我會物色更多的相關教程, 敬請期待!

你的 關注-收藏-轉發 是我繼續分享的動力!

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,197評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,415評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,104評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,884評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,647評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,130評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,208評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,366評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,887評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,737評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,939評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,478評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,174評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,586評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,827評論 1 283
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,608評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,914評論 2 372

推薦閱讀更多精彩內容