Файл: Отчет по лабораторной работе 5 по дисциплине Основы искусственного интеллекта.docx
Добавлен: 22.11.2023
Просмотров: 133
Скачиваний: 4
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
| Руководитель А.М. Семенов «»2023 г. Студент группы 20ПИнж(б)РПИС В.В. Машков «»2023 г. |
| Х1 | Х2 | Х3 | выход |
| 2,2 | 3,1 | 1,0 | 1 |
| 6,5 | 3,2 | 1,0 | -1 |
| 8,4 | 4,9 | 1,0 | -1 |
| 9,7 | 6,3 | 1,0 | -1 |
| 1,5 | 6,8 | 1,0 | 1 |
| 3,1 | 4,4 | 1,0 | 1 |
| 5,4 | 2,2 | 1,0 | -1 |
| 6,3 | 4,4 | 1,0 | 1 |
| 1,5 | 6,1 | 1,0 | -1 |
| 8,1 | 2,1 | 1,0 | -1 |
| 4,5 | 3,7 | 1,0 | 1 |
| 2,1 | 3,1 | 1,0 | 1 |
| 6,5 | 3,4 | 1,0 | -1 |
| 4,5 | 8,3 | 1,0 | 1 |
| 2,3 | 2,1 | 1,0 | 1 |
| 4,4 | 2,3 | 1,0 | -1 |
| 3,0 | 0,3 | 1,0 | -1 |
| 8,1 | 3,2 | 1,0 | 1 |
| 4,8 | 4,2 | 1,0 | 1 |
| 4,6 | 2,6 | 1,0 | -1 |
В качестве функции активации использовалась линейная функция. График функции представлен на рисунке 1.В процессе обучения нейросети на основе набора данных (таблица 1) и были получены следующие данные (рисунок 2):Рисунок 2 – результат обученияНа рисунке 3 графически представлена программа классификации. Если выходное значение равно -1, значит точка лежит выше линии, при 1 лежит ниже.Рисунок 3 – Классификация точке3 ВыводВ процессе выполнения лабораторной работы был изучен и реализован на языке python с помощью библиотеки numpy алгоритм обучения персептрона.В результате было получено графическое разбиение входных точек на два класса. На основе полученных данных, заключаем что персептрон правильно классифицирует входные данные.Приложение АКод программыimport numpy as npimport matplotlib.pyplot as pltfrom matplotlib.colors import ListedColormapcmap_light = ListedColormap(['#FF0000','#00FF00','#0000FF'])X=np.array([[2.0,3.0,1.0],[6.3,3.2,1.0], [8.4,4.9,1.0],[9.7,6.3,1.0],[1.5,4.8,1.0],[3.2,4.4,1.0],[5.4,2.2,1.0],[6.3,5.5,1.0],[8.5,6.1,1.0],[9.2,2.9,1.0],[4.5,8.7,1.0],[3.7,6.2,1.0],[6.5,3.7,1.0],[4.9,8.4,1.0],[2.3,6.2,1.0],[4.4,2.1,1.0],[6.2,0.7,1.0],[8.1,3.2,1.0],[3.9,4.2,1.0],[4.7,6.6,1.0]])Y=np.array([[1,-1,-1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,1,-1,-1,-1,1,1]]).Tsyn0=2*np.random.random((3,4))-1syn1=2*np.random.random((4,1))-1for j in range(60000):l1 = 1/(1+np.exp(-(np.dot(X,syn0))))l2 = 1/(1+np.exp(-(np.dot(l1,syn1))))l2_d = (Y-l2)*(l2*(1-l2))l1_d = l2_d.dot(syn1.T)*(l1*(1-l1))syn1 += l1.T.dot(l2_d)syn0 += X.T.dot(l1_d)print("Выходные данные")print(l2)plt.scatter(X[:,0],X[:,1],c=Y)plt.plot([0,10],[0,10],c='b')plt.xlim((0,10))plt.ylim((0,10))plt.grid(True)plt.show()