可能是最簡單的感知機演算法

2021-07-09 05:01:20 字數 1171 閱讀 4617

最近學習統計機器學習,主要是參考李航的《統計學習》,看完感知機後準備用python實現一下書上的例子。自己先在網上搜尋相關**,可是看了半天,大家的實現都太複雜了,**動輒上百行,而且將功能拆分成各個及其短小的函式,顯得十分不緊湊,而且不容易理解掌握,因此,想自己實現乙個更加簡單的版本,方便初學者理解和掌握,所以有了以下的**。

# -*- coding:utf8 -*-

import os

import sys

import numpy as np

#input

x1 = np.array([3,3])

x2 = np.array([4,3])

x3 = np.array([1,1])

y = np.array([1,1,-1])

x = np.array([x1,x2,x3])

gram = np.dot(x, x.t)

print

"x:\n",x

print

"gram:\n",gram

#params

a = np.array([0,0,0])

b = 0;

count = 0;

condition = 0;

samples_number = len(x)

while(count < (samples_number-1)):

for i in range(samples_number):

condition = np.dot(a*y, gram[i])

condition = (condition + b) * y[i]

if condition <= 0 :

a[i] += 1

#update parmas

b += y[i]

count = 0

else:

count += 1

w =np.dot( a*y,x)

print

"a:", a

print

"w:", w

print

"b:", b

關鍵的部分只是while迴圈內部,初學者只要看懂這個迴圈就可以很快掌握感知機的寫法,理解之後再寫出更強壯的**應該是比較容易了。

自己通過這個程式學習了numpy中array的用法。

可能是最精闢的Python matplot筆記

繪製多圖 多資料圖 特殊影象 y軸刻度逆時針旋轉45 plt.xticks rotation 45 x軸刻度逆時針旋轉45 plt.xlabel confidence x軸圖例 plt.ylabel money y軸圖例 plt.title confidence money 標題 2x2 第乙個位置...

C 可能是最簡單的多執行緒使用

1 包含 thread標頭檔案,先看一段正常 include using namespace std static mutex ut void fun1 int num void fun2 intmain 2 新增標頭檔案thread,建立多執行緒 include include using nam...

差異可能是重要的

3位可儲存8個值。n位可儲存2 n值。因為乙個位元組的8位,乙個位元組可以存放2 8 256 的值。變數的大小對大量的資訊可以儲存 這是更大的變數可以容納更多的限制。我們將進一步解決這個問題的時候,我們進入不同型別的變數。第二,電腦有乙個有限的可用記憶體。每一次我們宣告乙個變數,那游離的記憶是只要用...