感知機模型的假設空間是分離超平面 w·x + b = 0;使用自程式設計實現:模型的複雜度主要體現在x的特徵數量,也就是維度d上
import numpy as np
import matplotlib.pyplot as plt
class myperceptron:
def __init(self):
self.w = none #x維度未知
self.b = 0
self.l_rate = 1
def fit(self,x_train,y_train):
self.w = np.zeros(x_train.shape[1]) #用樣本點特徵數更新初始值w
self.b = 0
self.l_rate = 1#不加這兩句報錯了attributeerror: 'myperceptron' object has no attribute 'b'
i = 0
while i < x_train.shape[0]:
x = x_train[i]
y = y_train[i]
if y * (np.dot(self.w, x) + self.b) <= 0:
self.w = self.w + self.l_rate * np.dot(y,x)
self.b = self.b + self.l_rate * y
i = 0
else:
i = i + 1
def draw(x, w, b):
x_new = np.array([[0],[6]])
y_predict = -b - (w[0] * x_new)/w[1]
plt.plot(x[:2, 0], x[:2, 1],"g*",label="1")
plt.plot(x[2:, 0], x[2:, 0],"rx",label="-1")
plt.plot(x_new, y_predict, "b-")
plt.axis([0,6,0,6])
plt.xlabel('x1')
plt.ylabel('x2')
plt.legend()
plt.show()
def main():
x_train=np.array([[3,3],[4,3],[1,1]])
y_train=np.array([1,1,-1])
perceptron=myperceptron()
perceptron.fit(x_train,y_train)
print(perceptron.w)
print(perceptron.b)
draw(x_train, perceptron.w, perceptron.b)
if __name__=="__main__":
main()
使用sklearn中的perceptron模組:
from sklearn.linear_model import perceptron
import numpy as np
x_train = np.array([[3, 3], [4, 3], [1, 1]])
y = np.array([1, 1, -1])
perceptron = perceptron()
perceptron.fit(x_train,y)
print("w:",perceptron.coef_,"\n","b:",perceptron.intercept_,"\n","n_iter:",perceptron.n_iter_)
res = perceptron.score(x_train,y)
print("correct rate:".format(res))
借鑑了訓練營公布的答案,希望有機會可以繼續完善。 李航《統計學習方法》第一次
1.機器學習分類 監督學習 可以有輸入訓練後得到乙個模式 函式 並由此推斷新的例項。訓練資源是由輸入物件 通常是向量 和預期輸出可一世乙個連續的值 回歸分析 或者是乙個分類標籤 承做分類 函式輸出應用場景 手寫識別。半監督學習 一部分訓練示例已經標記,一部分沒有 強化學習 強調如何基於環境而行動,以...
統計學習方法 第一章統計學習方法概論
1.統計學習的方法是基於資料構建統計模型從而對資料進行 與分析。統計學習由監督學習,非監督學習,半監督學習和強化學習等組成。2.輸入變數和輸出變數都是連續變數,稱為回歸問題 輸出變數為有限個離散變數的 問題為分類問題 輸入變數和輸出變數均為變數序列的 問題稱為標註問題。3.統計學習常用的損失函式 0...
統計學習方法筆記 第一章統計學習方法概論
統計學習方法第一章筆記 赫爾伯特 西蒙曾經對學習下定義 如果乙個系統能夠通過執行某個過程改進它的效能,這就是學習。現在人們提到的機器學習就是統計機器學習。統計學習包括監督學習 supervised learning 非監督學習 unsupervisedlearning 半監督學習 semi supe...