首页 > 解决方案 > Google Colab 中的单感知器逻辑门问题

问题描述

我正在尝试使用单个感知器创建一些简单的逻辑门,例如 AND、OR 等。当我使用以下代码在 Google Colab 上创建 AND 门时:

from sklearn.linear_model import Perceptron
import matplotlib.pyplot as plt
import numpy as np
from itertools import product

# AND logic gate data and labels
data=[[0, 0], [0, 1], [1, 0], [1, 1]]
labels=[0, 0, 0, 1]

classifier=Perceptron(max_iter=40)
classifier.fit(data, labels)
print(classifier.score(data, labels))

x_values=np.linspace(0, 1, 100)
y_values=np.linspace(0, 1, 100)

point_grid=list(product(x_values, y_values))
distances=classifier.decision_function(point_grid)
abs_distances=[abs(pt) for pt in distances]

distances_matrix=np.reshape(abs_distances, (100, 100))
heatmap=plt.pcolormesh(x_values, y_values, distances_matrix)
plt.colorbar(heatmap)
plt.show()

这是输出:Google Colab 中的输出

图片显示了决策边界,但它是与门的错误决策边界。

如果我在另一个 juptyer 笔记本(如 Kaggle)中使用相同的代码,则决策边界是正确的,如下所示:Output in Kaggle

我的代码有问题吗?或者只是 Google Colab 的问题?

标签: pythonperceptron

解决方案


推荐阅读