python iris感知器模型
时间: 2023-11-17 11:05:39 浏览: 34
下面是一个简单的Python Iris感知器模型示例:
```python
import numpy as np
from sklearn.datasets import load_iris
# 加载鸢尾花数据集
iris = load_iris()
# 提取前两个特征和标签
X = iris.data[:, :2]
y = (iris.target != 0) * 1
# 初始化权重和偏置
w = np.zeros(X.shape[1])
b = 0
# 定义激活函数
def sigmoid(z):
return 1 / (1 + np.exp(-z))
# 定义损失函数
def loss(y_pred, y_true):
return -np.mean(y_true*np.log(y_pred) + (1-y_true)*np.log(1-y_pred))
# 定义训练函数
def train(X, y, w, b, learning_rate=0.1, epochs=100):
losses = []
for i in range(epochs):
# 计算模型预测值
z = np.dot(X, w) + b
y_pred = sigmoid(z)
# 计算损失值
l = loss(y_pred, y)
losses.append(l)
# 计算梯度
dw = np.dot(X.T, (y_pred - y)) / X.shape[0]
db = np.mean(y_pred - y)
# 更新权重和偏置
w -= learning_rate * dw
b -= learning_rate * db
# 输出训练过程
if i % 10 == 0:
print(f"Epoch {i}: Loss = {l}")
return w, b, losses
# 训练模型
w, b, losses = train(X, y, w, b)
# 绘制损失曲线
import matplotlib.pyplot as plt
plt.plot(losses)
plt.xlabel("Epoch")
plt.ylabel("Loss")
plt.show()
# 绘制决策边界
x_min, x_max = X[:, 0].min() - 0.5, X[:, 0].max() + 0.5
y_min, y_max = X[:, 1].min() - 0.5, X[:, 1].max() + 0.5
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02), np.arange(y_min, y_max, 0.02))
X_grid = np.c_[xx.ravel(), yy.ravel()]
Z = sigmoid(np.dot(X_grid, w) + b)
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, cmap=plt.cm.RdYlBu)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.brg)
plt.show()
```
该模型使用前两个特征和标签为0或1的鸢尾花数据集,定义了一个简单的感知器模型,使用sigmoid激活函数和交叉熵损失函数进行训练。训练过程中使用梯度下降法更新模型参数。最后绘制出训练过程中损失函数的变化曲线和决策边界。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)