Задача: написать программу для персептрона, который будет классифицировать объекты на два класса (например, положительные и отрицательные числа) на основе предоставленных обучающих данных.
Условие: обучающие данные представлены в виде матрицы X размера NxD, где N — количество объектов, а D — количество признаков (например, координаты x и y для точек на плоскости). Также имеется вектор целевых значений Y размера N, содержащий значения 1 для положительных объектов и -1 для отрицательных.
Программа должна выполнять следующие шаги:
Инициализировать веса W размера Dx1 случайным образом.
Для каждой обучающей пары (xi, yi) выполнить обновление весов согласно формуле: wi = wi + xi * yi.
Повторить шаги 1–2 для всех обучающих пар.
Проверить работу персептрона на тестовом наборе данных, предоставив ему новый объект x и проверив, какой будет результат (положительный или отрицательный).
В результате программа должна научиться классифицировать новые объекты на основе предоставленных обучающих данных.
Программа для персептрона, который классифицирует объекты на два класса на основе предоставленных обучающих данных, может выглядеть следующим образом на Python:
Python
import numpy as np
class Perceptron:
def __init__(self, num_features):
self.weights = np.random.rand(num_features)
def train(self, X, y, num_epochs):
for _ in range(num_epochs):
for i in range(len(X)):
prediction = np.sign(np.dot(X[i], self.weights))
if prediction != y[i]:
self.weights += X[i] * y[i]
def predict(self, x):
prediction = np.sign(np.dot(x, self.weights))
if prediction == 1:
return "Positive"
else:
return "Negative"
# Пример использования
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5]])
y = np.array([1, 1, -1, -1])
perceptron = Perceptron(num_features=X.shape[1])
perceptron.train(X, y, num_epochs=100)
new_object = np.array([5, 6])
result = perceptron.predict(new_object)
print("Результат классификации нового объекта:", result)
В данной программе создается класс Perceptron
, который содержит методы для инициализации весов, обучения персептрона на обучающих данных и предсказания класса для нового объекта. В примере использования обучающие данные представлены матрицей X
и вектором целевых значений y
. После обучения персептрона на этих данных, программа предсказывает класс нового объекта new_object
.
Ответы