Я пытаюсь создать несколько простых логических c ворот, таких как И, ИЛИ, и т.д. c., Используя один перцептрон. Когда я использую следующий код для создания логического элемента И в Google Colab:
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, граница решения правильная, как показано здесь: Вывод в Kaggle .
Есть ли проблема с моим кодом? Или просто проблема с Google Colab?