最新回答 / SherlockZoom
感知机的学习是有监督学习,在训练过程是有正确的类别来指导学习的,也就是每轮训练给出分类结果之后,只需要和gold类别对比就可以知道是否分类正确。
2017-07-06
最赞回答 / 慕函数5970831
感知器其实就是一个函数,其表示形式可以写成<...code...>上式中,w是权重(weigh)向量,b叫做偏置(bias)本教程中的w0就是上面式子里的偏置b.dot(w,x)+b又可以写成 dot(w,x)+b*1,这里令W=[b,w1,w2,...,wn] ,令X=[1,x1,x2,...,xn],所以初始化W的长度为n+1,多出来的那个就是偏置啦希望能帮到你~
2017-07-03
最新回答 / 慕前端1296039
首先,我们所求的答案并不一定是最优答案(最值),而通常是相对最优答案(极值)。拿周志华机器学习中的例子来说,当你站在山坡的某个位置时,只看你当前位置朝哪个方向走下山最快(即求导的过程),然后朝那个方向迈出一步(即更新权重的过程),之后继续看朝哪个方向走下山最快,再继续迈出一步(反复迭代)。也许,你会走到真正的山底(最值),也许你遇到某个坑就停下了(极值)。而针对极值,如果想要跳出,就涉及后面的优化算法了。
2017-07-02
errors+=int(update!=0.0)
self.errors_.append(errors)
pass
pass
def net_input(self,x):
return np.dot(X,self.w_[1:])+self.w_[0]
pass
def predict(self,x):
return np.where(self.net_input(x)>=0.0,1,-1)
pass
pass
pass
点赞排序吧!
self.errors_.append(errors)
pass
pass
def net_input(self,x):
return np.dot(X,self.w_[1:])+self.w_[0]
pass
def predict(self,x):
return np.where(self.net_input(x)>=0.0,1,-1)
pass
pass
pass
点赞排序吧!
2017-06-30
self.w_=np.zeros(1+x.shape[1]);
self.errors_=[]
for _ in range(self.n_iter):
errors=0
for xi,taret in zip(x,y):
"""
update=eat*(y-y')
xi 向量
"""
update =self.eta*(target-self.predict(xi))
self.w_[1:]+=update*xi
self.w_[0]+=update;
self.errors_=[]
for _ in range(self.n_iter):
errors=0
for xi,taret in zip(x,y):
"""
update=eat*(y-y')
xi 向量
"""
update =self.eta*(target-self.predict(xi))
self.w_[1:]+=update*xi
self.w_[0]+=update;
2017-06-30
#-*- coding: utf8 -*-
import numpy as np
class Perceptron(object):
"""
eat 学习率
n_iter 权重向量的训练次数
w—— 神经分叉权重
errors 记录神经元判断出错次数
"""
def __init__(self, eat=0.01,n_iter=10):
self.eta = eta
self.n_iter=n_iter
def fit(self,x,y):
import numpy as np
class Perceptron(object):
"""
eat 学习率
n_iter 权重向量的训练次数
w—— 神经分叉权重
errors 记录神经元判断出错次数
"""
def __init__(self, eat=0.01,n_iter=10):
self.eta = eta
self.n_iter=n_iter
def fit(self,x,y):
2017-06-30