1. 程式人生 > >【MOOC】Python機器學習應用-北京理工大學

【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大部分,分別用於完成分類任務、迴歸任務、聚類任務、降維任務、 模型選擇以及資料的預處理

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述