【MOOC】Python機器學習應用-北京理工大學
1.機器學習簡介
1.1.機器學習的目的
機器學習是實現人工智慧的手段,其主要研究內容是如何利用資料或經驗進行學習,改善具體演算法的效能
• 多領域交叉,涉及概率論、統計學,演算法複雜度理論等多門學科
• 廣泛應用於網路搜尋、垃圾郵件過濾、推薦系統、廣告投放、信用評價、欺詐檢測、股票交易和醫療診斷等應用
1.2.機器學習的分類
機器學習一般分為下面幾種類別
• 監督學習 (Supervised Learning)
• 無監督學習 (Unsupervised Learning)
• 強化學習(Reinforcement Learning,增強學習)(可參考這個視訊理解)
• 半監督學習(Semi-supervised Learning)(介於監督和無監督學習之間)
• 深度學習 (Deep Learning)(利用深層神經網路抽象得表示資料特徵的一種方法)
1.3.Python Scikit-learn
• Machine Leaning in Python
• 一組簡單有效的工具集
• 依賴Python的NumPy,SciPy和matplotlib庫
• 開源、可複用
本課程也主要注重於sklearn的使用方法,對於演算法的原理不做過多深究
常用函式:
1.4.課程目標
• 瞭解基本的機器學習原理及演算法
• 學習利用機器學習演算法解決應用問題的能力
• 掌握sklearn庫中常用機器學習演算法的基本呼叫方法,避免重複造車
2.相關書籍及課程推薦[重點-良心推薦]
圖書:
《PRML》-Bishop 民間評價:“早知此書,PhD早畢業2年”
課程:
《Machine Learning》-Andrew Ng(機器學習入門)
《CS231n: Convolutional Neural Networks for Visual Recognition》- Fei-Fei Li(深度學習)
《Reinforcement Learning》- David Silver(增強學習)
3.sklearn庫中的標準資料集及基本功能
3.1.標準資料集
總覽:
舉例:
->波士頓房價資料集
介紹:波士頓房價資料集包含506組資料,每條資料包含房屋以及房屋周圍的詳細資訊。其中包括城鎮犯罪率、一氧化氮濃度、住宅平均房間數、到中心區域的加權距離以及自住房平均房價等。因此,波士頓房價資料集能夠應用到迴歸問題上。
屬性描述:
屬性 | 描述 |
---|---|
CRIM | 城鎮人均犯罪率 |
ZN | 住宅用地超過 25000 sq.ft. 的比例 |
INDUS | 城鎮非零售商用土地的比例 |
CHAS | 查理斯河空變數(如果邊界是河流,則為1;否則為0) |
NOX | 一氧化氮濃度 |
RM | 住宅平均房間數 |
AGE | 1940 年之前建成的自用房屋比例 |
DIS | 到波士頓五個中心區域的加權距離 |
RAD | 輻射性公路的接近指數 |
TAX | 每 10000 美元的全值財產稅率 |
PTRATIO | 城鎮師生比例 |
B | 1000(Bk-0.63)^ 2,其中 Bk 指代城鎮中黑人的比例 |
LSTAT | 人口中地位低下者的比例 |
MEDV | 自住房的平均房價,以千美元計 |
部分資料:
使用方法:
使用sklearn.datasets.load_boston即可載入相關資料集,其重要引數為:
• return_X_y: 表示是否返回target(即價格),預設為False,只返回data(即屬性)
使用舉例:
>>> from sklearn.datasets import load_boston
>>> boston = load_boston()
>>> print(boston.data.shape)
(506, 13)
>>> from sklearn.datasets import load_boston
>>> data, target = load_boston(return_X_y=True)#區別在這裡
>>> print(data.shape)
(506, 13)
>>> print(target.shape)
(506)
->鳶尾花資料集
介紹:鳶尾花資料集採集的是鳶尾花的測量資料以及其所屬的類別。
測量資料包括:萼片長度、萼片寬度、花瓣長度、花瓣寬度。類別共分為三類:Iris Setosa,Iris Versicolour,Iris Virginica。該資料集可用於多分類問題。
部分資料:
使用方法:
使用sklearn.datasets. load_iris即可載入相關資料集,其重要引數有:
• return_X_y: 若為True,則以(data, target)形式返回資料;預設為False,表示以字典形式返回資料全部資訊(包括data和target)。
使用舉例:
>>> from sklearn.datasets import load_iris
>>> iris = load_iris()
>>> print(iris.data.shape)
(150, 4)
>>> print(iris.target.shape)
(150, )
>>> list(iris.target_names)
['setosa', 'versicolor', 'virginica']
->手寫數字資料集
介紹:手寫數字資料集包括1797個0-9的手寫數字資料,每個數字由8*8大小的矩陣構成,矩陣中值的範圍是0-16,代表顏色的深度。
部分資料:
使用方法:
使用sklearn.datasets.load_digits即可載入相關資料集,其引數包括:
• return_X_y:若為True,則以(data, target)形式返回資料;預設為False,表示以字典形式返回資料全部資訊(包括data和target) ;
• n_class:表示返回資料的類別數,如:n_class=5,則返回0到4的資料樣本。
使用舉例:
>>> from sklearn.datasets import load_digits
>>> digits = load_digits()
>>> print(digits.data.shape)
(1797, 64)
>>> print(digits.target.shape)
(1797, )
>>> print(digits.images.shape)
(1797, 8, 8)
>>> import matplotlib.pyplot as plt
>>> plt.matshow(digits.images[0])
>>> plt.show()
輸出:
3.2.sklearn庫的基本功能
sklearn庫的共分為6大部分,分別用於完成分類任務、迴歸任務、聚類任務、降維任務、 模型選擇以及資料的預處理。