入門機器學習實用指南Hands-On Machine Learning with Scikit-Learn & TensorFlow (第二章)

我對本書中的代碼做了詳盡的註釋,放到了我的github,star我哦(✪ω✪)

Q:端到端(end to end)

end-to-end(端對端)的方法,一端輸入我的原始數據,一端輸出我想得到的結果。只關心輸入和輸出,中間的步驟全部都不管。轉自TopCoderの陳澤澤

Q:對收入中位數進行縮放,分類

你或許會這麼想,書中爲什麼要將收入中位數進行分類呢?
書中把所有的數據除以1.5,並將大於5的歸於5,其實是在將收入中位數進行分類,然後根據每一類來進行分層抽樣,保證每一類別在驗證集中都佔有同樣的比例。那麼爲什麼不直接進行分類,而是要除以1.5呢?我分先畫個圖看看收入的分佈:
收入分佈
圖中我們可以看到,數據是不是大多集中2-6,如果我們要分類的話得分類別(2,3,4,5,6),因爲要保證每一個類別都需要有足夠多的實例,實例少的就歸到其他類。作者希望訓練的分類從1開始,因此作者把數據都除以1.5,這樣也就可以分類爲(1,2,3,4,5)了。所有這些對數據的操作只是爲了切分訓練集與驗證集,切分完了之後會將這些分類數據刪掉,並不會同原始數據一起訓練,所以對訓練的結果不會產生影響。
分類情況

Q:繪製點圖

housing.plot(kind="scatter", x="longitude", y="latitude", alpha=0.4,
    s=housing["population"]/100, label="population", figsize=(10,7),
    c="median_house_value", cmap=plt.get_cmap("jet"), colorbar=True,
    sharex=False)

DataFrame.plot()講解:pandas.DataFrame.plot其實是集成了matplotlib的多個繪圖函數。本例中kind="scatter"就相當與是matlotlib的scatter函數。傳入的參數也就是scatter函數的參數。
x,y:x座標和y座標
alpha:透明度
s:Size首字母。s可以設置點圖中每一個點的大小,s是每個點的大小的一個集合。x,y決定點的順序,對應着s集合中的順序。也就是說第i個(x,y)座標對應的點的大小就是s[i]。當點數超過s集合的大小時,又重新從s[0]開始。在本例中,s取的是人口的數量,每個座標點的大小剛好對應該點人口數,直接取原始數據畫出的點太大,通過除以100來限制點的大小。weixin_39462002這篇博客值得一看
c:Color首字母。同s類似,c是點的顏色的序列(x,y)[i]也與c[i]對應。可以自定義顏色序列如[‘b’,‘r’],b:blue,r:red。在本例中沒有使用自定義的顏色序列這種方法,而是使用了另一種方法,即c爲一個數字序列,然後使用matplotlib自帶的colormap來對這個數字序列根據數字大小對應顏色,見下一參數。
cmap:Colormap。如上方所說,可以使用matplotlib的colormap來作爲繪圖的顏色序列。這裏使用的是‘jet’,所有的colormap見這裏
colormap----jet如圖所示是名爲‘jet’的colormap,本例中c=“median_house_value”,即選取房價中位數作爲數字序列,數字越大的顏色越紅,即畫出的圖表中,越紅的點房價越高。房價人口分佈colorbar:是否顯示顏色條,即上圖右方顏色條,即jet。
sharex=False:這句用來修復一個圖表顯示的bug(x軸的值和圖例顯示不出來)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章