??機器學習入門??(一) 機器學習簡介 | 附加小練習
目錄
1. 機器學習是什么
2. 機器學習、深度學習和人工智能的區(qū)別與聯(lián)系
3. 機器學習的應用
4. 機器學習分類
4.1 監(jiān)督學習
4.2 無監(jiān)督學習
4.3 半監(jiān)督學習
4.4 強化學習
5. 小練習
5.1 第一題
5.2 第二題
5.3 第三題
1. 機器學習是什么
用老師上課的一張圖我們可以用大白話來解釋:
大量的數(shù)據(jù)通過這個學習機器去學習計算,然后獲取到一些精華的數(shù)據(jù)來進行一些猜想,預測或是實踐。
e.g:
舉個例子,高考,每個人進行大量的題目學習,然后去高考。進行大量的題目學習,就是學習計算,然后獲取到了一些精華的數(shù)據(jù)知識,去高考就是用你所學的數(shù)據(jù)知識進行實踐。人如此,機器也是如此,這也可以應用在機器上面,如果一個機器去經過大量的題目進行學習,機器也可以去參加高考,而且也不會差。
再舉個例子,給機器很多的貓狗圖片,讓這個機器一直看,一直訓練學習,那當訓練到一定程度的時候,就會讓這個機器能認清楚,識別出貓狗的圖片了,這也就是機器學習了。如果是過擬合的情況,我們以后再說。
用專業(yè)術語來說的話就是
對于某類任務T和性能度量P,如果一個計算機程序在T上以P衡量的性能隨著經驗E而自我完善,那么我們稱這個計算機程序在從經驗E中學習。
2. 機器學習、深度學習和人工智能的區(qū)別與聯(lián)系
今天的深度學習已經是一個廣袤的學科領域了。
深度學習是實現(xiàn)機器學習的一種方法
機器學習是實現(xiàn)人工智能的一種途徑
3. 機器學習的應用
人臉識別:我們手機上的faceID就是一個機器學習的應用
阿爾法狗:和世界棋手柯潔的切磋
無人駕駛:特斯拉的無人駕駛技術
推薦算法:抖音,頭條的推薦算法,根據(jù)你的喜好,推薦你感興趣的內容
等等
4. 機器學習分類
機器學習可分為監(jiān)督學習,無監(jiān)督學習,半監(jiān)督學習,強化學習等等
4.1 監(jiān)督學習
擁有標簽可監(jiān)督算法不斷調整模型,得到輸入與輸出的映射函數(shù)
舉個例子:
給你一個已經標注好的數(shù)據(jù)集,比如貓狗。已經知道這些數(shù)據(jù)集是貓和狗了,讓你去進行學習。根據(jù)已給的特征進行學習辨別。去辨認未來一些未知的圖像是貓還是狗。
4.2 無監(jiān)督學習
無標簽,通過分析數(shù)據(jù)本身進行建模,發(fā)掘底層信息和隱藏結構。
舉個例子:
給你一個數(shù)據(jù)集,但是你不知道這是什么數(shù)據(jù)集,可能有貓有狗,也可能有貓有狗有豬,這是不知道的,讓你去根據(jù)他們的特征的不同去分類。
4.3 半監(jiān)督學習
部分有標簽,部分無標簽,并使用這些數(shù)據(jù)進行模型訓練
舉個例子:
給你一個數(shù)據(jù)集,讓你知道這個數(shù)據(jù)集是里面是有貓的,但是只是確定的是貓,還有沒有狗和豬。這是未知的。使用大量的未標記,以及同時使用標記的數(shù)據(jù)去進行模型識別工作。
4.4 強化學習
先行動起來,如果方向正確那么就繼續(xù)前行,如果錯了,吸取經驗,好好改正,失敗乃成功之母,從頭再來就是。
總之要行動,即想要理解信息,得輸入到輸出的映射,就需要從自身的以往經驗中去不斷學習來獲取知識,從而不需要大量已標記的確定標簽,只需要一個評價行為好壞的獎懲機制進行反饋,強化學習通過這樣的反饋自己進行學習。(當前行為好以后就多往這個方向發(fā)展,如果壞就盡量避免這樣的行為,即不是直接得到了標簽,而是自己在實際中總結得到的)
5. 小練習
前提:電腦已經有了python環(huán)境
安裝sklearn
換源安裝sklearn
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn scikit-learn
1
5.1 第一題
生成數(shù)據(jù)make_circles和make_moons并顯示X=400x2,Y={0,1}^400 畫圖
這個X就是一個400*2的矩陣點,點的第一個是X的值,點第二個是Y的值
Y就是這個400的點的分類,0和1代表決策,一個是內圈一個是外圈。
from sklearn.datasets import make_circles from sklearn.datasets import make_moons import matplotlib.pyplot as plt from matplotlib.pyplot import MultipleLocator fig = plt.figure(1) # 創(chuàng)建一個figure的畫圖窗口 """ n_samples:整數(shù) 生成的總點數(shù),如果是奇數(shù),內圓比外圓多一點 shuffle:布爾變量 是否打亂樣本 noise:double或None 將高斯噪聲的標準差加入到數(shù)據(jù)中 random_state:整數(shù) RandomState instance or None,確定數(shù)據(jù)集變換和噪聲的隨機數(shù)生成。 factor:0 < double < 1 內外圓的半徑之比 """ x1, y1 = make_circles(n_samples=400, factor=0.2, noise=0.1) # 生成一個二維的大圓,包含一個小圓 # datasets.make_circles()專門用來生成圓圈形狀的二維樣本 # factor表示內圈和外圈的半徑之比.每圈共有n_samples/2個點 plt.subplot(1, 2, 1) # 一行兩列,這個畫在第一個 plt.title('data by make_circles()') # 標題 yList = [] for y in y1: if y == 1: y = 'r' # 更改顏色 yList.append(y) else: y = 'b' yList.append(y) x_major_locator = MultipleLocator(0.5) ax = plt.gca() ax.xaxis.set_major_locator(x_major_locator) plt.xlim(-1.4, 1.4) # 設置x軸間隔 plt.scatter(x1[:, 0], x1[:, 1], marker='o', c=yList) # 橫縱坐標 plt.tight_layout(pad=4) # 兩個圖片之間距離 """ n_numbers : 生成樣本數(shù)量 shuffle : 是否打亂,類似于將數(shù)據(jù)集random一下 noise : 默認是false,數(shù)據(jù)集是否加入高斯噪聲 random_state : 生成隨機種子,給定一個int型數(shù)據(jù),能夠保證每次生成數(shù)據(jù)相同。 """ plt.subplot(1, 2, 2) # 一行兩列,這個畫在第二個 x2, y2 = make_moons(n_samples=400, noise=0.1) x_major_locator2 = MultipleLocator(0.5) ax = plt.gca() ax.xaxis.set_major_locator(x_major_locator2) plt.xlim(-1.4, 2.4) plt.title('data by make_moons()') # 標題 plt.scatter(x2[:, 0], x2[:, 1], marker='o', c=y2) plt.show()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
5.2 第二題
高維數(shù)據(jù)如何可視化?
t-SNE(t-distributedstochastic neighbor embedding )是目前最為流行的一種高維數(shù)據(jù)降維的算法。
在大數(shù)據(jù)的時代,數(shù)據(jù)不僅越來越大,而且也變得越來越復雜,數(shù)據(jù)維度的轉化也在驚人的增加
例如,一組圖像的維度就是該圖像的像素個數(shù),其范圍從數(shù)千到數(shù)百萬。對計算機而言,處理高維數(shù)據(jù)絕對沒問題,但是人類能感知的確只有三個維度,因此很有必要將高維數(shù)據(jù)可視化的展現(xiàn)出來。那么如何將數(shù)據(jù)集從一個任意維度的降維到二維或三維呢。
T-SNE就是一種數(shù)據(jù)降維的算法,其成立的前提是基于這樣的假設:盡管現(xiàn)實世界中的許多數(shù)據(jù)集是嵌入在高維空間中,但是都具有很低的內在維度。也就是說高維數(shù)據(jù)經過降維后,在低維狀態(tài)下更能顯示出其本質特性。這就是流行學習的基本思想,也稱為非線性降維。
將三維的數(shù)據(jù)編程二維可查看的數(shù)據(jù)形式。
具體可以查看這一篇博客 高維數(shù)據(jù)可視化
5.3 第三題
上機器學習數(shù)據(jù)庫,機器學習數(shù)據(jù)庫 ,下載并顯示至少一個圖像和一個文檔的數(shù)據(jù)集。
import PIL.Image as Image import os IMAGES_PATH = r'D:\data\jpg\' # 圖片集地址 IMAGES_FORMAT = ['.jpg', '.JPG'] # 圖片格式 IMAGE_SIZE = 1000 # 每張小圖片的大小 IMAGE_ROW = 5 # 圖片間隔,也就是合并成一張圖后,一共有幾行 IMAGE_COLUMN = 10 # 圖片間隔,也就是合并成一張圖后,一共有幾列 IMAGE_SAVE_PATH = r'D:\data\data.jpg' # 圖片轉換后的地址 # 獲取圖片集地址下的所有圖片名稱 imageNames = [name for name in os.listdir(IMAGES_PATH) for item in IMAGES_FORMAT if os.path.splitext(name)[1] == item] # for x in os.listdir(IMAGES_PATH): # for item in IMAGES_FORMAT: # 簡單的對于參數(shù)的設定和實際圖片集的大小進行數(shù)量判斷 if len(imageNames) != IMAGE_ROW * IMAGE_COLUMN: raise ValueError("合成圖片的參數(shù)和要求的數(shù)量不能匹配!") # 定義圖像拼接函數(shù) def imageCompose(): toImage = Image.new('RGB', (IMAGE_COLUMN * IMAGE_SIZE, IMAGE_ROW * IMAGE_SIZE)) # 創(chuàng)建一個新圖 # 循環(huán)遍歷,把每張圖片按順序粘貼到對應位置上 for y in range(1, IMAGE_ROW + 1): for x in range(1, IMAGE_COLUMN + 1): from_image = Image.open(IMAGES_PATH + imageNames[IMAGE_COLUMN * (y - 1) + x - 1]).resize( (IMAGE_SIZE, IMAGE_SIZE), Image.ANTIALIAS) toImage.paste(from_image, ((x - 1) * IMAGE_SIZE, (y - 1) * IMAGE_SIZE)) return toImage.save(IMAGE_SAVE_PATH) # 保存新圖 if __name__ == '__main__': imageCompose() # 調用函數(shù)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
輸出形式
機器學習 深度學習
版權聲明:本文內容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內刪除侵權內容。
版權聲明:本文內容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內刪除侵權內容。