iris单层感知机
时间: 2023-08-31 19:06:27 浏览: 186
单层感知机是一种最简单的神经网络模型,适用于二分类问题。Iris数据集是一个经典的机器学习数据集,包含150个样本,每个样本包含4个特征,分别是花萼长度、花萼宽度、花瓣长度和花瓣宽度,以及一个类别标签,表示该样本属于哪一类鸢尾花。
下面是使用单层感知机解决Iris数据集的示例代码:
```python
import numpy as np
from sklearn.datasets import load_iris
# 加载Iris数据集
iris = load_iris()
X = iris.data
y = iris.target
# 将类别标签转化为1和-1
y[y == 0] = -1
y[y == 1] = -1
y[y == 2] = 1
# 定义感知机模型
class Perceptron:
def __init__(self, n_features):
self.w = np.zeros(n_features)
self.b = 0
def train(self, X, y, lr=0.01, epochs=100):
for epoch in range(epochs):
for i in range(len(X)):
if y[i] * (np.dot(X[i], self.w) + self.b) <= 0:
self.w += lr * y[i] * X[i]
self.b += lr * y[i]
def predict(self, X):
return np.sign(np.dot(X, self.w) + self.b)
# 训练模型
perceptron = Perceptron(n_features=4)
perceptron.train(X, y)
# 预测结果
y_pred = perceptron.predict(X)
accuracy = np.mean(y_pred == y)
print('Accuracy:', accuracy)
```
在上述代码中,我们首先将Iris数据集中的类别标签转化为1和-1,然后定义了一个单层感知机模型。在训练过程中,我们对每个样本进行更新,直到模型收敛或达到指定的迭代次数。最后,我们对所有样本进行预测,并计算准确率。
阅读全文