2019年4月25日 星期四

好書 : Hands-on machine learning with scikit-learn and tensorflow

此書從母校高科大借來有一段時間了, 最近翻開來看覺得寫得還不錯, 理論與實作兼有之, 打算有空按圖索驥研究練習, 打好 ML 基本功. 此書分兩部分, 前 8 章為基礎篇, 主要講述機器學習基本演算法 (使用 Scikit-learn 函式庫); 第 9 章以後則為 TensorFlow 部分, 例如深度學習與捲積神經網路.


Source : Oreilly


此書中譯本為機械工業出版的簡體版, 參考 :

機器學習實戰 : 基於Scikit-Learn和TensorFlow
https://www.tenlong.com.tw/products/9787111603023


Source : 天瓏


此書範例檔可在 GitHub 下載 :

# http://github.com/ageron/handson-ml

在 /dataset 目錄下有三個資料集目錄 :

1. 目錄 /dataset/lifesat 下存放的是加州普查的住房資料 :

https://github.com/ageron/handson-ml/blob/master/datasets/housing/housing.csv


2. 目錄 /dataset/lifesat 底下存放了兩個資料集, 一個是世界貨幣組織 (IMF) 的國民生產毛額各國 GDP 資料 :

https://github.com/ageron/handson-ml/blob/master/datasets/lifesat/gdp_per_capita.csv

另一個是經濟合作發展組織 (OECD) 2015 年的全球生活滿意度指數統計資料 :

https://github.com/ageron/handson-ml/blob/master/datasets/lifesat/oecd_bli_2015.csv

3. 目錄 /dataset/inception 下存放的是 ImageNet 的分類資料 :

# https://github.com/ageron/handson-ml/blob/master/datasets/inception/imagenet_class_names.txt


下面是在樹莓派進行的加州住房資料測試 :

1. 首先下載 housing.tgz 壓縮檔 :

pi@raspberrypi:~ $ wget https://raw.githubusercontent.com/ageron/handson-ml/master/datasets/housing/housing.tgz 
--2019-04-25 08:18:03--  https://raw.githubusercontent.com/ageron/handson-ml/master/datasets/housing/housing.tgz
正在查找主機 raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.228.133
正在連接 raw.githubusercontent.com (raw.githubusercontent.com)|151.101.228.133|:443... 連上了。
已送出 HTTP 要求,正在等候回應... 200 OK
長度: 409488 (400K) [application/octet-stream]
Saving to: ‘housing.tgz’

2019-04-25 08:18:10 (469 KB/s) - ‘housing.tgz’ saved [409488/409488]


2. 使用 tar 解壓縮即可得到 housing.csv 檔 :

pi@raspberrypi:~ $ tar -zxvf housing.tgz 
housing.csv 
pi@raspberrypi:~ $ ls -ls housing.csv 
1392 -rw-r--r-- 1 pi pi 1423529  5月  3  2016 housing.csv

也可以直接下載 csv 檔, 例如 :

pi@raspberrypi:~ $ wget https://github.com/ageron/handson-ml/blob/master/datasets/housing/housing.csv 
--2019-04-25 14:42:43--  https://github.com/ageron/handson-ml/blob/master/datasets/housing/housing.csv
正在查找主機 github.com (github.com)... 192.30.253.112, 192.30.253.113
正在連接 github.com (github.com)|192.30.253.112|:443... 連上了。
已送出 HTTP 要求,正在等候回應... 200 OK
長度: 未指定 [text/html]
Saving to: ‘housing.csv’

2019-04-25 14:42:45 (104 KB/s) - ‘housing.csv’ saved [58348]

pi@raspberrypi:~ $ ls -ls housing.csv 
60 -rw-r--r-- 1 pi pi 58348  4月 25 14:42 housing.csv

3. 進入 Python Shell 讀取 csv 檔 : 

pi@raspberrypi:~ $ python3 
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas as pd   
>>> df=pd.read_csv('housing.csv') 
>>> df.head() 
   longitude  latitude  ...  median_house_value  ocean_proximity
0    -122.23     37.88  ...            452600.0         NEAR BAY
1    -122.22     37.86  ...            358500.0         NEAR BAY
2    -122.24     37.85  ...            352100.0         NEAR BAY
3    -122.25     37.85  ...            341300.0         NEAR BAY
4    -122.25     37.85  ...            342200.0         NEAR BAY

[5 rows x 10 columns]
>>> df.info() 
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 20640 entries, 0 to 20639
Data columns (total 10 columns):
longitude             20640 non-null float64
latitude              20640 non-null float64
housing_median_age    20640 non-null float64
total_rooms           20640 non-null float64
total_bedrooms        20433 non-null float64
population            20640 non-null float64
households            20640 non-null float64
median_income         20640 non-null float64
median_house_value    20640 non-null float64
ocean_proximity       20640 non-null object
dtypes: float64(9), object(1)
memory usage: 1.5+ MB

閱讀此書的前提是必須有 Python 基礎, 特別是熟悉 Numpy, Pandas, Matlabplot 等科學運算套件. 作者的序有一段話值得記下 : 雖然在機器學習中深度學習無疑是令人驚奇的領域, 但切莫急於跳下去, 你應該先熟習機器學習的基本功才對. 事實上許多問題只要用較簡單的技術例如隨機森林等就能漂亮地解決. 深度學習比較適合用在較複雜的問題, 例如影像處理, 語音識別, 或者自然語言處理等領域, 只要你有足夠的資料, 計算力, 以及耐力.

嗯, 有道理, 先把 Scikit-learn 好好學完再說吧.

沒有留言:

張貼留言