创建感知器类Perceptron,设计fit, input, predict, score函数,分别实现训练样本、
时间: 2024-05-06 17:18:46 浏览: 126
输入数据、预测输出和得分的功能。Perceptron类的实现如下:
```python
import numpy as np
class Perceptron:
def __init__(self, n_features):
self.weights = np.zeros(n_features + 1) # 初始化权重为0
def fit(self, X, y, learning_rate=0.1, n_epochs=100):
X = np.insert(X, 0, 1, axis=1) # 插入常数列1
for epoch in range(n_epochs):
for i in range(X.shape[0]):
y_pred = self.predict(X[i])
error = y[i] - y_pred
self.weights += learning_rate * error * X[i]
def input(self, X):
X = np.insert(X, 0, 1) # 插入常数1
return X
def predict(self, X):
X = self.input(X)
y_pred = np.sign(np.dot(self.weights, X))
return y_pred
def score(self, X, y):
X = np.insert(X, 0, 1, axis=1) # 插入常数列1
y_pred = np.sign(np.dot(X, self.weights))
accuracy = np.sum(y_pred == y) / len(y)
return accuracy
```
其中:
- `__init__`函数初始化权重为0,输入参数为特征数。
- `fit`函数训练模型,输入参数为训练数据X、标签y、学习率learning_rate和迭代次数n_epochs。在每个epoch中,遍历所有样本,计算预测输出和实际输出之差(即误差),根据误差更新权重。
- `input`函数将输入数据插入常数1,并返回插入后的向量。
- `predict`函数预测输出,输入参数为输入数据X。在预测前先将输入数据插入常数1,然后根据权重计算预测输出,并使用sign函数将输出转为-1或1。
- `score`函数计算模型得分,输入参数为测试数据X和标签y。在预测前将输入数据插入常数1,然后计算预测输出并与实际标签比较,计算准确率作为模型得分。
阅读全文