訓練數據
Training Data
前言叨B叨
機器學習, 數據是必不可少的. 本章就帶大家一起過一下示例文件中用于機器學習的房價數據.
1. 瀏覽房價數據
讓我們先從瀏覽數據開始我們的項目。在示例項目中找到ml_house_data_set.csv。雙擊預覽, 這是一個簡單的逗號分隔的文件,你也可以用Excel打開。然鵝,由于文件太大,直接打開會有點慢。
數據集中共有40000多條房價信息,因此,我們將使用pandas來加載數據集,并創建一個表格來顯示前100條房價信息,這樣便于我們在Web瀏覽器中查看它。
用pandas加載數據集非常簡單。首先我們使用read_csv命令來加載數據到數據表(data table)。
數據表有點像一個虛擬的可編程電子表格。一旦我們的數據存入數據表對象中,我們就可以用電子表格應用程序中的數據進行許多相同的計算。接下來我們就要抓取前100行數據然后使用to_html函數將數據轉換成一個網頁。pandas提供了許多像這樣的幫助函數來將數據轉換成其他格式。
最后,我們將在這里編寫HTML文件,然后使用我們的Web瀏覽器使用Python內置的Web瀏覽器模塊打開它。
讓我們運行代碼并查看數據集中的前100行。右鍵單擊并選擇運行。下面是Web瀏覽器中的數據。
每一行都是一條房價信息。讓我們看看數據屬性:
- 在第一欄里,建造年份(year_built)。小伙伴們都知道,房齡是會影響它的價格的,所以這個屬性對我們來說應該乎很有用。
- 第二列是層數,就是說這房子是單層的,還是復式的,或者是多層的.
- 接下來,有臥室的數目,也有完整的衛生間或者半個衛生間。一個完整的衛生間意思是包含淋浴, 能洗澡的那種。
- 其次,還有房子的占地面積和實用面積。這告訴我們房子的大小。
- 接下來我們有車庫類型。車庫分為獨立的還是集成的。一個獨立的車庫是一個獨立的建筑。還有車庫的大小。
讓我們滾動到最后。我們也有幾個true/false標志。has_fireplace,has_pool,has_central_heating和has_central_cooling。這些告訴我們,每個房子的特點。你可以想象,有沒有游泳池或空調可能會影響房子的價值,所以這對我們來說是很有用的信息。我們也有每個房子的地址,包括門牌號、街道名稱、單位編號、城市編號和郵政編碼。
最后,我們有一個房子的實際銷售價格。這個就是我們要用機器學習系統預測的價值。要建立任何新的機器學習項目時,首先要做的就是對數據集有一個全面的了解。對你現有的數據有一個大致的了解, 對于選擇解決問題的最佳方法是至關重要的。
2. 訓練數據 的命名標準約定
我們的房屋銷售數據集每個房屋信息有19個字段。前18個字段描述了房子本身。他們告訴我們它有多大,它在什么地方,等等。這18個字段稱為特征(feature)。特征是輸入到預測模型中的值。
最后一個字段 售價(sale_price),就是我們試圖預測的價值。當我們使用有監督的學習來解決問題時,我們總是有相同的設置。特征輸入到有監督學習算法中后,該算法返回一個或多個目標值。為了便于與其他程序員統一口徑,有一些標準來約定命名。
要輸入算法的特征集合稱為X,右邊我們試圖預測的值稱為Y,當你閱讀scikit-learn文檔或看任何機器學習代碼時,你會看到這樣的命名慣例幾乎無處不在。
3. 確定你需要多少數據
在我們的數據集中,我們有超過40000條房屋的銷售記錄。對于每一套房子,我們捕捉到18個不同的特征,如房齡,幾室幾廳,等等。當您在自己的程序中使用機器學習時,您可能無法拿到數以萬計的記錄。那么,究竟需要多少數據才能成功地使用機器學習呢?當您的數據集涵蓋了模型中所有可能的特性組合時,機器學習算法起到了最大的作用。例如,我們希望我們的房價數據集包括房子的價格,衛生間數量,有沒有車庫,有沒有游泳池等等。
表現出的組合越多,模型就越能捕捉到這些屬性是如何影響房屋最終價格的。如果你的數據集沒有某個特定特征組合的數據點,機器學習模型就不能做出很好的預測。
例如,如果我們要求我們的機器學習模型給我們一個有100個臥室和80個衛生間的巨大宮殿的價格估計,它將不能給我們一個非常準確的估計,因為在我們的數據集中沒有這樣的房子。至少,在建立機器學習模型時,一個好的點子是在數據集中的數據至少是模型中特征數量的10倍。
我們有18個特征,在我們的住房數據集,所以我們希望有至少180個房子工作。但并不是一定要求要這樣。在某些情況下,獲取更多的數據是不可能的。數據的數量比特征數少,會這使得問題更具挑戰性。
最后,數據多一般總是比數據少更好。你需要訓練的數據越多,你就越有可能建立一個能在不同場景中做出準確預測的系統。所以,如果你有很多可用的數據,一定要使用它。
在接下來的課程中,我們將學習如何檢測機器學習系統的準確性。精確度測量(Accuracy measurements)讓你知道何時已經有足夠的數據,或者何時需要再收集更多數據。
結語
如有錯誤請高手指正.
你的 關注-收藏-轉發 是我繼續分享的動力!