程式碼實現簡單的機器學習
1 import numpy as np
2
3 # 生成隨機權值(無先驗經驗時一般使用隨機權值)
4 m = np.random.randint(100, size=10)
5 # 訓練資料
6 x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
7 # 訓練資料對應的期望目標(學習目標) False為奇數,True為偶數
8 y = np.array([False, True, False, True, False, True, False, True, False, True])
9 # 閾值(自行設定)
10 thresh_hold = 52
11 # 學習率,即變化幅度
12 alpha = 5
13
14
15 #
16 def active():
17 print(m)
18 return m * x
19
20
21 def ajust_m(j):
22 err = 0
23 right = 0
24 o_new = active()
25 o_t = o_new > thresh_hold
26 for i in range(10):
27 if o_t[i] != y[i]:
28 err += 1
29 if o_t[i]:
30 m[i] = m[i] - alpha
31 else:
32 m[i] = m[i] - alpha
33 else:
34 right += 1
35 return right
36
37
38 def predict(a):
39 result = a * m[a - 1]
40 if result > thresh_hold:
41 return True
42 else:
43 return False
44
45
46 for j in range(100):
47 right = ajust_m(j)
48 if right == 10:
49 print(`第{}次已經訓練成功,停止訓練`.format(j + 1))
50 break
51 if j == 99 and right != 10:
52 print(`訓練了{}次,訓練失敗!!`.format(j + 1))
53
54 print(``, predict(8))
機器學習簡要概念
A,B表明兩個工作地點的收益,A一個小時50¥,B一個小時100¥
W1,W2是兩地工作時間,稱為權重,機器學習中要調整的係數,[W1,W2]構成一個二維搜尋空間
T = W1*A + W2*B 是我們的評估函式
TMax = 650 是期望目標,也是我們的學習目標
每天工作8小時,每地至少工作1小時,這是學習約束
delta = |T - TMax| 絕對值是我們的評估函式,損失函式(cost,loss)
delta = 達到什麼結果搜尋結束,由演算法來設計,例如delta=1 搜尋結束(搜尋結束也稱為函式收斂)
在搜尋空間中嘗試搜尋過程中,對W1,W2改變的幅度稱為學習率
機器學習詞彙
- 節點
- predicting a category:預測類別
- predicting a quantity:預測數值
- labeled data:是否資料打過標籤
- 迴歸
- SGD Regressor:隨機梯度下降回歸
- Lasso/ElasticNet Lasso:彈性網路 迴歸
- SVR (kernel=`linear`):支援向量機迴歸使用線性函式作為核函式
- SVR (kernel=`rbf`):支援向量機迴歸使用徑向基函式
- RidgeRegressor:嶺迴歸
- 分類
- Linear SVC:線性支援向量機分類
- Navie Bayes:樸素貝葉斯
- KNeighbors Classifier:K近鄰分類器
- SVC:支援向量機分類器
- SGD Classifier:隨機梯度下降分類器
- kernel approximation:核近似方法
- 聚類
- MiniBatch KMeans:最小族(束)KMeans
- KMeans:傳統KMeans
- Spectral Clustering:譜聚類
- GMM:混合高斯模型
- VBGMM:VB混合高斯模型