AI學習--機器學習概述

 學習框架

 

01-人工智能概述

  • 機器學習、人工智能與深度學習的關係

達特茅斯會議-人工智能的起點html

機器學習是人工智能的一個實現途徑
深度學習是機器學習的一個方法發展而來(人工神經網絡)java

image

    從圖上能夠看出,人工智能最開始是用於實現人機對弈,到後面的開始處理垃圾郵件過濾【機器學習,機器去模仿人工神經網絡】,到最後的圖片識別效果顯著【深度神經網絡,在圖像識別中取得好的成績】,也就是人工智能發展的3個歷程。算法

  • 機器學習、深度學習的應用

傳統預測: 店鋪銷量預測,移動用戶流量消費預測,
圖像識別: 人臉識別、無人駕駛
天然語言處理: 英文翻譯、文本分類、感情分析、只能客服json

image

02-機器學習

  • 什麼是機器學習 

機器學習就是從數據中自動分析得到模型,並利用模型對未知的數據進行預測數組

  大量的數量 –》 發佈預測模型 --》 結果預測網絡

image

例如,咱們將大量的貓圖片,利用Py轉換爲二進制的文件,而後交給機器去學習,去發現必定的規律後,下次機器就能夠在大量的圖片中發現包含貓的圖片。框架

  • 數據集的構成: 特徵值 + 目前值

image

說明:有些數據咱們沒有目標值,可是也是能夠根據他們的特徵進行歸類(有專門的算法)dom


 

03-機器學習算法分類

      根據咱們機器學習的結果有無目標值分爲監督學習無監督學習機器學習

     監督學習根據輸入的數據特徵分爲分類學習迴歸學習工具

image

image

監督學習:
            目標值:類別 - 分類問題(貓狗的識別)
                k-近鄰算法、貝葉斯分類、決策樹與隨機森林、邏輯迴歸
            目標值:連續型的數據 - 迴歸問題(房屋價格預測,看作曲線)
                線性迴歸、嶺迴歸

無監督學習:
          目標值:無 - 無監督學習
             聚類 k-means

生活案例:
        一、預測明天的氣溫是多少度? 迴歸
        二、預測明天是陰、晴仍是雨? 分類
        三、人臉年齡預測? 可迴歸/可分類
        四、人臉識別? 分類

 

04-機器學習開發流程

機器學習開發流程:
        1)獲取數據(數據量越大,數據越精確)
        2)數據處理(對不符合要求的數據進行剔除,對不完整的數據進行數據完整)
        3)特徵工程(把數據處理成符合咱們具備特徵值的數據)
        4)機器學習算法訓練 –》 產生模型
        5)模型評估(用一系列的方法對產生的模型進行評估,若是符合要求,則繼續,不然輪訓繼續進行數據處理和特徵工程)
        6)應用(用模型對未知的數據進行預測)

imageimage

05-學習框架介紹

學習框架和資料介紹:
    1)算法是核心,數據與計算是基礎【很消耗計算性能,須要能支持它計算的硬件設備,CPU和GPU等】

    2)咱們作的都是基於專業的算法工程師的基礎上進行數據分析、業務分析、常見算法的整合以及結合特徵工程進行參數的調優、優化
    3)  實戰類書籍推薦:

              機器學習 -」西瓜書」- 周志華
               統計學習方法 - 李航
               深度學習 - 「花書」

    4)開源框架:

image

06-可用數據集

     咱們的數據集分爲訓練集測試集合,機器學習主要用到了sklearn,下面介紹sklearn數據集

  • 可用數據集

    互聯網公司內部接口:  借用百度
    學習階段能夠用的數據集:
        1)sklearn
        2)kaggle(數據挖掘)
        3)UCI(加州大學的一個研究機構)

image

UCI數據集:https://archive.ics.uci.edu/ml/datasets/Iris

 

  • Scikit-learn工具介紹

image

  • Scikit-Learn安裝
# 會幫助咱們去安裝一下中間的插件,例如Numpy, Scipy等庫
pip3 install Scikit-learn

image

  • Scikit-learn包含的內容

image

  • sklearn數據集API的使用

load_*  獲取小規模數據集,例如後面的鳶尾花, iris = load_iris()

fetch_* 獲取大規模數據集

image

sklearn小數據集(鳶尾花案例)
       sklearn.datasets.load_iris()

image

image

sklearn大數據集
      sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’)

image

數據集的返回值
        datasets.base.Bunch(繼承自字典)
              dict["key"] = values
               bunch.key = values  # 能夠根據.屬性的方式 獲取values值

image

# 例子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()

說明:咱們獲取到的數據不能所有用於訓練數據,由於有一部分的數據是須要用來進行對訓練出來的模型進行模型評估的。

 

  • 數據集的劃分

image

  • 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
     訓練集特徵值、測試集特徵值、訓練集目標值、測試集目標值

image

完整版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()
相關文章
相關標籤/搜索