感知器算法python
时间: 2023-09-16 14:11:24 浏览: 89
感知器算法是一种二元分类算法,可以用Python实现。下面是一个使用NumPy库实现感知器算法的示例代码:
```python
import numpy as np
class Perceptron:
def __init__(self, learning_rate=0.1, epochs=50):
self.learning_rate = learning_rate
self.epochs = epochs
def fit(self, X, y):
# 初始化权重
self.weights = np.zeros(X.shape[1])
self.bias = 0
for epoch in range(self.epochs):
for i, x in enumerate(X):
y_pred = self.predict(x)
error = y[i] - y_pred
# 更新权重和偏置
self.weights += self.learning_rate * error * x
self.bias += self.learning_rate * error
def predict(self, X):
# 计算加权和
y_pred = np.dot(X, self.weights) + self.bias
# 使用阈值函数进行二元分类
return np.where(y_pred >= 0, 1, -1)
```
这个代码中,`Perceptron`类有两个主要方法:`fit`和`predict`。`fit`方法用于训练模型,它接受输入数据`X`和标签`y`,并在`epochs`轮中更新权重和偏置。`predict`方法用于预测新的数据点的标签。在`predict`方法中,我们首先计算加权和,然后使用阈值函数进行二元分类。
使用感知器算法,我们可以对数据进行二元分类。下面是一个使用感知器算法分类Iris数据集的示例代码:
```python
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# 加载Iris数据集
data = load_iris()
# 只使用前两个特征
X = data.data[:, :2]
y = np.where(data.target == 0, -1, 1)
# 数据标准化
scaler = StandardScaler()
X = scaler.fit_transform(X)
# 拆分数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 训练模型
perceptron = Perceptron(learning_rate=0.1, epochs=50)
perceptron.fit(X_train, y_train)
# 预测测试集
y_pred = perceptron.predict(X_test)
# 计算准确率
accuracy = np.mean(y_pred == y_test)
print(f'Accuracy: {accuracy:.2f}')
```
在这个示例代码中,我们加载了Iris数据集,并使用`StandardScaler`对数据进行标准化。然后,我们使用`train_test_split`将数据集拆分为训练集和测试集。最后,我们使用`Perceptron`类训练模型,并使用测试集计算准确率。
阅读全文