達特茅斯會議-人工智能的起點html
機器學習是人工智能的一個實現途徑
深度學習是機器學習的一個方法發展而來(人工神經網絡)java
從圖上能夠看出,人工智能最開始是用於實現人機對弈,到後面的開始處理垃圾郵件過濾【機器學習,機器去模仿人工神經網絡】,到最後的圖片識別效果顯著【深度神經網絡,在圖像識別中取得好的成績】,也就是人工智能發展的3個歷程。算法
傳統預測: 店鋪銷量預測,移動用戶流量消費預測,
圖像識別: 人臉識別、無人駕駛
天然語言處理: 英文翻譯、文本分類、感情分析、只能客服json
機器學習就是從數據中自動分析得到模型,並利用模型對未知的數據進行預測數組
大量的數量 –》 發佈預測模型 --》 結果預測網絡
例如,咱們將大量的貓圖片,利用Py轉換爲二進制的文件,而後交給機器去學習,去發現必定的規律後,下次機器就能夠在大量的圖片中發現包含貓的圖片。框架
說明:有些數據咱們沒有目標值,可是也是能夠根據他們的特徵進行歸類(有專門的算法)dom
根據咱們機器學習的結果有無目標值分爲監督學習和無監督學習。機器學習
監督學習根據輸入的數據特徵分爲分類學習和迴歸學習工具
監督學習:
目標值:類別 - 分類問題(貓狗的識別)
k-近鄰算法、貝葉斯分類、決策樹與隨機森林、邏輯迴歸
目標值:連續型的數據 - 迴歸問題(房屋價格預測,看作曲線)
線性迴歸、嶺迴歸無監督學習:
目標值:無 - 無監督學習
聚類 k-means生活案例:
一、預測明天的氣溫是多少度? 迴歸
二、預測明天是陰、晴仍是雨? 分類
三、人臉年齡預測? 可迴歸/可分類
四、人臉識別? 分類
機器學習開發流程:
1)獲取數據(數據量越大,數據越精確)
2)數據處理(對不符合要求的數據進行剔除,對不完整的數據進行數據完整)
3)特徵工程(把數據處理成符合咱們具備特徵值的數據)
4)機器學習算法訓練 –》 產生模型
5)模型評估(用一系列的方法對產生的模型進行評估,若是符合要求,則繼續,不然輪訓繼續進行數據處理和特徵工程)
6)應用(用模型對未知的數據進行預測)
學習框架和資料介紹:
1)算法是核心,數據與計算是基礎【很消耗計算性能,須要能支持它計算的硬件設備,CPU和GPU等】
2)咱們作的都是基於專業的算法工程師的基礎上進行數據分析、業務分析、常見算法的整合以及結合特徵工程進行參數的調優、優化
3) 實戰類書籍推薦:
機器學習 -」西瓜書」- 周志華
統計學習方法 - 李航
深度學習 - 「花書」
4)開源框架:
咱們的數據集分爲訓練集和測試集合,機器學習主要用到了sklearn,下面介紹sklearn數據集
互聯網公司內部接口: 借用百度
學習階段能夠用的數據集:
1)sklearn
2)kaggle(數據挖掘)
3)UCI(加州大學的一個研究機構)
UCI數據集:https://archive.ics.uci.edu/ml/datasets/Iris
# 會幫助咱們去安裝一下中間的插件,例如Numpy, Scipy等庫
pip3 install Scikit-learn
load_* 獲取小規模數據集,例如後面的鳶尾花, iris = load_iris()
fetch_* 獲取大規模數據集
sklearn小數據集(鳶尾花案例)
sklearn.datasets.load_iris()
sklearn大數據集
sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’)
數據集的返回值
datasets.base.Bunch(繼承自字典)
dict["key"] = values
bunch.key = values # 能夠根據.屬性的方式 獲取values值
# 例子1:簡單使用 from sklearn.datasets import load_iris import json def datasets_demo(): ''' datasets數據集的使用 :return: ''' iris = load_iris() print(type(iris.data)) # print("鳶尾花所有數據集:", iris) # 返回值是一個bunch類型 print('查看數據集目標值(利用字典形式)',iris['target_names'])# # 查看數據集目標值(字典形式) ['setosa' 'versicolor' 'virginica'] print('查收數據集描述信息(利用bunch形式)', iris.DESCR) ''' =============查收數據集(利用bunch形式) **Data Set Characteristics:** :Number of Instances: 150 (50 in each of three classes) :Number of Attributes: 4 numeric, predictive attributes and the class :Attribute Information: # 花的屬性信息 - sepal length in cm - sepal width in cm - petal length in cm - petal width in cm - class: # 目標值,也就是對鳶尾花進行分類 - Iris-Setosa - Iris-Versicolour - Iris-Virginica :Summary Statistics: # 鳶尾花的信息統計 ============== ==== ==== ======= ===== ==================== Min Max Mean SD Class Correlation(相關係數) ============== ==== ==== ======= ===== ==================== sepal length: 4.3 7.9 5.84 0.83 0.7826 sepal width: 2.0 4.4 3.05 0.43 -0.4194 petal length: 1.0 6.9 3.76 1.76 0.9490 (high!) petal width: 0.1 2.5 1.20 0.76 0.9565 (high!) ============== ==== ==== ======= ===== ==================== :Missing Attribute Values: None :Class Distribution: 33.3% for each of 3 classes. :Creator: R.A. Fisher :Donor: Michael Marshall (MARSHALL%PLU@io.arc.nasa.gov) :Date: July, 1988 ''' print("鳶尾花標本:", iris.data) # 返回時一個ndarray類型,屬於numpy類,二維數組 ''' 鳶尾花標本: [[5.1 3.5 1.4 0.2] [4.9 3. 1.4 0.2] [4.7 3.2 1.3 0.2] [4.6 3.1 1.5 0.2]] ''' print("查看樣本數量:", iris.data.shape) # iris.data是一個numpy.ndarray類型;.shape能夠直接看到幾行幾列 # 查看樣本數量: (150, 4) ==》 150個樣本,每一個樣本有4個特徵值 return None if __name__ =='__main__': datasets_demo()
說明:咱們獲取到的數據不能所有用於訓練數據,由於有一部分的數據是須要用來進行對訓練出來的模型進行模型評估的。
- sklearn中數據集劃分API的使用
sklearn.model_selection.train_test_split(arrays, *option)參數:x: 特徵值【必須】y: 目標值【必須】test_size: 測試集的大小,通常爲浮點數,例如0.2,默認0.25【可選】random_state: 劃分數據集的時候,是隨機劃分的,藉助一個隨機數種子產生隨機,不一樣的隨機數種子產生的結果是不同的【可選】返回值:x_train, x_test, y_train, y_test訓練集特徵值、測試集特徵值、訓練集目標值、測試集目標值
完整版Demo
from sklearn.model_selection import train_test_split from sklearn.datasets import load_iris def datasets_demo(): iris = load_iris() print('查看數據集目標值(利用字典形式)',iris['target_names'])# print('查收數據集描述信息(利用bunch形式)', iris.DESCR) print("鳶尾花標本:", iris.data) # 返回時一個ndarray類型,屬於numpy類,二維數組 print("查看特徵值:", iris.data) # iris.data是一個numpy.ndarray類型;.shape能夠直接看到幾行幾列,共計150,4 # 數據集劃分 x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=2019) print('訓練集的特徵值x_train', x_train) print('訓練集的特徵值x_train有多少行多少列', x_train.shape) # (120,4) 即150*0.8 print('測試集的特徵值x_test', x_test) return None if __name__ =='__main__': datasets_demo()