# -*- coding: utf-8 -*-
'''
Created on 2017年12月21日
@author: Jason.F
@summary: 自适应线性神经网络学习算法
'''
import numpy as np
import time
import matplotlib.pyplot as plt
import pandas as pd
class AdalineGD(object):
'''
Adaptive Linear Neuron classifier.
hyper-Parameters
eta:float=Learning rate (between 0.0 and 1.0)
n_iter:int=Passes over the training dataset.
Attributes
w_:ld-array=weights after fitting.
costs_:list=Number of misclassification in every epoch.
'''
def __init__(self,eta=0.01,n_iter=50):
self.eta=eta
self.n_iter=n_iter
def fit(self,X,y):
'''
Fit training data.
Parameters
X:{array-like},shape=[n_samples,n_features]=Training vectors,where n_samples is the number of samples and n_features is the number of features.
y:array-like,shape=[n_samples]=Target values.
Returns
self:object
'''
self.w_=np.zeros(1+X.shape[1])
self.costs_=[]
for i in range(self.n_iter):
output=self.net_input(X)
errors=(y-output)
self.w_[1:] += self.eta * X.T.dot(errors)
self.w_[0] += self.eta * errors.sum()
cost=(errors ** 2).sum() /2.0
self.costs_.append(cost)
return self
def net_input(self,X):
#calculate net input
return np.dot(X,self.w_[1:])+self.w_[0]
def activation(self,X):
#computer linear activation
return self.net_input(X)
def predict(self,X):
#return clas
【Python-ML】自适应线性神经网络(Adaline)
最新推荐文章于 2020-07-05 15:26:06 发布