感知器算法求判别函数用Python语言
时间: 2024-03-28 08:12:32 浏览: 15
感知器算法可以用于二分类问题,其求解的判别函数可以表示为:
$f(x)=\begin{cases}1,\text{ if }w\cdot x+b>0\\0,\text{ otherwise}\end{cases}$
其中,$w$为权重向量,$b$为偏置,$x$为输入特征向量。
以下是使用Python语言实现感知器算法求解判别函数的示例代码:
```python
import numpy as np
class Perceptron:
def __init__(self, learning_rate=0.1, max_iter=100):
self.learning_rate = learning_rate
self.max_iter = max_iter
def fit(self, X, y):
# 初始化权重向量和偏置
self.w = np.zeros(X.shape[1])
self.b = 0
# 迭代更新权重向量和偏置
for _ in range(self.max_iter):
for i in range(X.shape[0]):
if y[i] * (np.dot(self.w, X[i]) + self.b) <= 0:
self.w += self.learning_rate * y[i] * X[i]
self.b += self.learning_rate * y[i]
def predict(self, X):
# 使用训练好的权重向量和偏置进行预测
y_pred = np.dot(X, self.w) + self.b
y_pred[y_pred > 0] = 1
y_pred[y_pred <= 0] = 0
return y_pred
```
其中,`fit`方法用于训练模型,`predict`方法用于预测。使用时,先创建一个`Perceptron`对象,然后调用`fit`方法进行训练,最后调用`predict`方法进行预测。例如:
```python
X = np.array([[1, 2], [2, 3], [3, 1], [4, 3]])
y = np.array([0, 0, 1, 1])
perceptron = Perceptron()
perceptron.fit(X, y)
y_pred = perceptron.predict(X)
print(y_pred) # 输出 [0. 0. 1. 1.]
```