-
panda数据分析库 df = pd.read_csv(file , header = None) df.head(10) 读取10行 df.loc[0:100 , 4].values 读取0到100行的第四列数据 iloc主要使用数字来索引数据,而不能使用字符型的标签来索引数据 而loc则刚好相反,只能使用字符型标签来索引数据,不能使用数字 来索引数据 plt.scatter绘制散点图 plt.scatter(X[:50 , 0] , X[:50 , 1] , color='red' , marker='o') 前50列数据,x轴为0列,y轴为1列数据,画出的点为红圈
查看全部 -
X:[ [1,2,3] , [4,5,6] ] y:[ 1 , -1 ] zip(X,y) = [[1,2,3, 1 ] , [4,5,6 , -1]] np.zero 向量全赋零操作 np.dot(X , y) 点积 w_[1:]权重w从1到最后 np.where(x>0 , true , false) 等价于冒号表达式
查看全部 -
X = np.array X:shape[n_samples , n_features] X:[ [1 , 2 , 3] , [4 , 5 , 6] ] n_samples : 2 n_features : 3 X.shape[1]就是X的n_samples值,值为2。
查看全部 -
和方差求偏导
查看全部 -
import numpy as np
class perceptron(object):
'''
eta:学习率
n_iter:权重向量的训练次数
w_:神经分叉权重向量 w处理输入x
errors_:用于记录神经元判断出错次数
'''
def _int_(self,eat=0.01,n_iter=10):
self.eat=eat;
self.n_iter=n_iter;
pass
def fit(self,X,y):
"""
输入训练数据,培训神经元,X是输入的训练样本,y是对样本的正确分类
X:shape[n_samples,n_features]
n_samples:几组数据。n_features:有多少个神经分叉。
X[[1,2,3],[4,5,6]]
n_samples:2
n_features:3
y:[1,-1]
"""
'''
初始化权重向量为0
w_:是一个一位数组,代表每个神经纤维的权重向量
X.shape[1]:在计算有几个神经纤维
加一是因为前面算法提到的w0,也就是步调函数的阈值
开始的时候阈值 塞它=w0 用w0保存
'''
self.w_=np.zero(1+X.shape[1]);
self.errors=[];
for _ in range(self.n_iter):
error=0;
'''
X[[1,2,3],[4,5,6]]
y:[1,-1]
zip(X,y)=[[1,2,3,1],[4,5,6,-1]]
'''
for xi,target in zip(X,y):
'''
target:每组数据,一个个神经元 判断的正确值标准值
update=学习率*(y-y')
'''
update=self.eta*(target-self.predict(xi))
'''
predict:函数,是用来根据每个神经元输入的一组数据得到自己判断的结果
xi 是一个向量
update*xi等价:
[的它w(1)=x[1]*update,的它w(2)=x[2]*update,的它w(3)=x[3]*update,]
'''
self.w_[1:] +=update*xi
self.w_[0] +=update;
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
查看全部 -
对人类智商和尊严进行全面的碾压...
查看全部 -
感知器数据分类算法步骤
查看全部 -
file="" import pandas as pd import matplotlib.pyplot as plt import numpy as np df=pd.read_cvs(flie,header=none)//文件第一行即数据第一行 y=df.loc[0:100,4].values//读取数据,将0-100行数据的第四列,作为输出y(vector) y=np.where(y=="",1,-1)//将输出字符串转化成数字 x=df.loc[0:100,[0,2]].values//第0列和第2列作为输入抽取出来 plt.scatter(x[:50,0],x[:50,1],color='red',marker='o',label="xxx") plt.scatter(x[50:100,0],x[50:100,1],color='blue',marker='x',label="yyy") plt.xlabel('lll') plt.ylabel('mmm') plt.legend(loc='upper left')//设置图例属性 plt.show()
查看全部 -
感知器算法 试用范围:
Linearly separable 线性可分割 √
Not linearly separable 线性不可分割的 ×
查看全部 -
阈值的更新
阈值
一开始是 根据我们的经验,设定一个值
这个值再后续中要不断的更新。
就是 w0 的更新。没有x0可以乘。
θ = -w0
wo = w0 + dw0
dw0 = η * e(y)
查看全部 -
权重更新算法:
wj = wj + dwj
dwj = η * (y - y^) * xj
= η * e(y) * xj
η:学习率,是[0, 1]间的一个小数。
需要模型的设计者自己去设定。模型自己训练中不断地调整权重w的取值。然鹅,不同的学习率η,有可能会影响到最后的模型学习效果。
查看全部 -
步调函数 & 阈值
z* = z - theta (????)
z* >< 2* theta
查看全部 -
感知器 数据分类算法 步骤:
把权重向量w初始化为0(或[0, 1]间任意小数);
把训练样本输入感知器,得到分类结果(-1, 或1);
根据分类结果更新权重向量w 。
整个机器学习的目的,就是 通过输入的训练样本,反复去更新权重向量w,直到权重向量更新到一定程度之后,我们的整个模型才能有效地对未知输入做出有效的分类和预测。
查看全部 -
123查看全部
-
老师没有把代码贴出来,光看老师讲映像不够深刻,还是要自己动手。同学把自己整理的代码贴出来给大家看看:
查看全部
举报