感知机学习算法定义实例方法score函数class Perception_model: def __init__(self,n): self.w=np.zeros(n,dtype=np.float32) self.b=0 self.l_rate=0.1 def sign(self,x): y=np.dot(x,self.w)+self.b return y def fit(self,X_train,y_train): is_wrong=True while is_wrong: is_wrong=False for i in range(len(X_train)): if y_train[i]*self.sign(X_train[i])<=0: self.w=self.w+self.l_rate*np.dot(y_train[i],X_train[i]) self.b=self.b+self.l_rate*y_train[i] is_wrong=True def score(self,X_test,y_test):
时间: 2023-12-18 14:05:37 浏览: 93
该类实现了感知机算法的模型训练和预测功能。其中score函数用于评估模型在测试集上的性能,返回模型在测试集上的准确率。
具体实现如下:
```python
class Perception_model:
def __init__(self,n):
self.w=np.zeros(n,dtype=np.float32) # 初始化权重向量w,长度为n
self.b=0 # 初始化偏置b
self.l_rate=0.1 # 学习率
def sign(self,x):
y=np.dot(x,self.w)+self.b # 计算wx+b
return y
def fit(self,X_train,y_train):
is_wrong=True
while is_wrong:
is_wrong=False
for i in range(len(X_train)):
if y_train[i]*self.sign(X_train[i])<=0: # 如果分类错误
self.w=self.w+self.l_rate*np.dot(y_train[i],X_train[i]) # 更新权重向量w
self.b=self.b+self.l_rate*y_train[i] # 更新偏置b
is_wrong=True
def score(self,X_test,y_test):
correct=0
for i in range(len(X_test)):
if y_test[i]*self.sign(X_test[i])>0: # 如果分类正确
correct+=1
return correct/len(X_test) # 返回准确率
```
其中,构造函数`__init__`初始化了模型参数,包括权重向量`w`、偏置`b`和学习率`l_rate`。
`sign`方法用于计算输入样本`x`的预测值,即$wx+b$。
`fit`方法用于训练模型,其中`X_train`和`y_train`分别表示训练集的特征和标签。该方法采用了随机梯度下降法更新模型参数,直到所有样本都分类正确为止。
`score`方法用于评估模型在测试集上的性能。首先,对于测试集中的每个样本,计算模型的预测值,并与真实标签进行比较。如果预测值与真实标签符号相同,则分类正确。最后,计算分类正确的样本数占总样本数的比例,作为模型在测试集上的准确率。
阅读全文