Файл: Задание Смоделировать заданную функцию на отрезке 0, 8 с использованием библиотеки neuralnet. Отчет должен содержать подготовку данных для обучения сети..docx
Добавлен: 08.11.2023
Просмотров: 206
Скачиваний: 25
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Лаба 1 Задание 1
Задание:
Смоделировать заданную функцию на отрезке [0, 8] с использованием библиотеки neuralnet. Отчет должен содержать подготовку данных для обучения сети. Обоснование выбранной архитектуры. Структурную схему обученной сети с указанием весов. Графики моделируемой и смоделированной функций.
Моделируемая функция
y=0.5*sin(x) + cos(2*x) + sqrt(x)
Ход работы:
Моделируемая функция:
Моделируемая функция, представленная в коде, вычисляется с использованием формулы 0.5*sin(x) + cos(2*x) + sqrt(x). Эта функция комбинирует синус, косинус и квадратный корень от переменной x.
Смоделированная функция
В данном коде нейронная сеть обучается моделировать зависимость между переменными x и y на основе обучающего набора данных. После обучения сети используется функция predict для получения предсказанных значений y на основе нового набора данных.
График, полученный с помощью функции plot(x, y, pch=16, cex=1.5, col='green'), отображает моделируемую функцию. Здесь значения x отображены на оси X, а значения y - на оси Y.
Для смоделированной функции нет явного графика в коде, но с помощью функции points(x, yp, col='black', pch='.', cex=1.5) на график добавляются точки с предсказанными значениями y на основе обученной нейронной сети.
Код программы:
set.seed(9)
x<-runif(50,0,8)
y <- 0.5*sin(x) + cos(2*x) + sqrt(x)
plot(x,y,pch=16,cex=1.5,col='green')
learn=data.frame(x,y)
library(neuralnet)
netcos <- neuralnet (y
x, hidden=4, learn)
set.seed(6)
x<-runif(5000,0,8)
y<-0
test=data.frame(x,y)
yp<-predict(netcos,test)
points(x,yp,col='black',pch='.',cex=1.5)
plot(netcos)
y1=1/(1+exp(-0.44767*x+1.1841))
y2=1/(1+exp(1.59218*x-9.13195))
y3=1/(1+exp(0.61334*x-4.29697) )
y4=1/(1+exp(1.66478*x+4.21321))
set.seed(6)
x <-runif(5000,0,8)
plot(x,y2,col="blue")
points(x,y1,col="red")
points(x,y3,col="green")
points(x,y4,col="yellow")
Рисунок 1 - Модель функции 0.5*sin(x) + cos(2*x) + sqrt(x)
Задание 2
Подобрать структуру hidden и порог функции ошибки threshold для точной аппроксимации заданных последовательностей импульсов. Отчет по работе должен содержать структурную схему обученной сети без указания весов. Графики аппроксимируемой и полученной последовательности для нескольких приближений параметров hidden и threshold.
Программный код:
set.seed(9)
x<-seq(from=-9.5,to =10,by=0.5)
y<-rep(c(1,1,1,1,1,0,0,0,0,0),4)
learn=data.frame(x,y)
library(neuralnet)
netcos<-neuralnet(y
x,learn,hidden=c(10,10),threshold = 0.01)
netcos2<-neuralnet (y
x,learn,hidden=c(25,20,10),threshold = 0.001)
set.seed(6)
test=data.frame(x,y)
y1<-predict(netcos,test)
y2<-predict(netcos2,test)
par(mfrow = c(3, 2))
plot(x,y,type='l',col='yellow',lwd=9)
lines(x,y1)
plot(x,y,type ='l',col='yellow',lwd=9)
lines (x,y2)
Рисунок 2 - Графики аппроксимируемой и полученной последовательности
Лаба 2
Составить прогноз для заданного временного ряда с использованием библиотеки nnet. Отчет должен содержать подготовку данных для обучения сети. Обоснование выбранной архитектуры. Структурную схему обученной сети без указания весов.
Ход работы
-
Загрузка временного ряда "calls".
-
Создание матрицы LearnSeq размером (n-12) x 13, где n - длина временного ряда.
-
Заполнение матрицы LearnSeq значениями из временного ряда calls.
-
Разделение данных на обучающий и тестовый наборы.
-
Обоснование выбранной архитектуры нейронной сети:
В данном примере была выбрана нейронная сеть с одним скрытым слоем размером 60 нейронов и линейной функцией активации на выходном слое (linout=TRUE). Эта архитектура была выбрана на основе эмпирического опыта и может потребовать дополнительной настройки для достижения лучшей точности прогнозирования. Размер скрытого слоя (60) можно изменять, исходя из требований конкретного временного ряда.
Код программы:
library(fpp2)
library(nnet)
scripts<-calls
n<-length(scripts)
LearnSeq<-matrix(rep(0, (n-12)*13) ,nrow=n-12,ncol=13)
for(i in 1:(n-12))LearnSeq[i,]<- scripts[i:(12+i)]
set.seed(55)
Nnet<-nnet(LearnSeq[,1:12],LearnSeq[,13],size=60, linout=TRUE, rang=0.1,maxit=300)
prognos <-c(rep(0,12),Nnet$fitted.value)
ggplot(scripts,aes(x))+geom_line(aes(y=scripts),color="blue",size=2)+geom_line(aes(y=prognos),color="yellow",size=0.5)
Визуализация результата:
Лабораторная работа № 4
Построить автокодировщик для заданной обучающей выборки. Отчет должен содержать подготовку данных для обучения сети. Формирование формул для входа и выхода. Визуализацию обучающей выборки и восстановленного образца. Структурную схему обученной сети без указания весов. Варианты заданий приведены в табл., где указаны названия файлов с обучающей выборкой, которые доступны из библиотеки RSNNS
Ход работы:
Загружаем библиотеку RSNNS.
Определяем функцию print.alphabet, которая будет использоваться для визуализации букв.
Загружаем обучающую выборку snnsData$letters_auto.pat из библиотеки RSNNS.
Подготавливаем данные для обучения, создавая датафрейм train.data, который содержит входные и выходные данные.
Формируем формулу form для входа и выхода автокодировщика.
Создаем автокодировщик, используя функцию neuralnet с указанной формулой, обучающими данными, количеством скрытых нейронов и пороговым значением для остановки обучения.
Подготавливаем тестовые данные в датафрейме test.data.
Получаем прогноз от автокодировщика, используя функцию predict.
Визуализируем восстановленные образцы с помощью функции print.alphabet
Код программы:
library(RSNNS)
library(neuralnet)
print.alphabet <- function(x){
letter <- matrixToActMapList(x, nrow = 7)
par(mar = c(1, 1, 1, 1))
par(mfrow = c(4, 7))
n <- c(1:26)
for (i in n) plotActMap(letter[[i]])
}
data(snnsData)
inputs <- snnsData$letters_auto.pat
print.alphabet(inputs)
train.data <- data.frame(inputs, inputs)
x.names <- paste0("in", 1:35, collapse = "+")
y.names <- paste0("out", 1:35, collapse = "+")
form <- as.formula(paste(x.names, "
", y.names))
Лаба 1 Задание 1
Задание:
Смоделировать заданную функцию на отрезке [0, 8] с использованием библиотеки neuralnet. Отчет должен содержать подготовку данных для обучения сети. Обоснование выбранной архитектуры. Структурную схему обученной сети с указанием весов. Графики моделируемой и смоделированной функций.
Моделируемая функция
y=0.5*sin(x) + cos(2*x) + sqrt(x)
Ход работы:
Моделируемая функция:
Моделируемая функция, представленная в коде, вычисляется с использованием формулы 0.5*sin(x) + cos(2*x) + sqrt(x). Эта функция комбинирует синус, косинус и квадратный корень от переменной x.
Смоделированная функция
В данном коде нейронная сеть обучается моделировать зависимость между переменными x и y на основе обучающего набора данных. После обучения сети используется функция predict для получения предсказанных значений y на основе нового набора данных.
График, полученный с помощью функции plot(x, y, pch=16, cex=1.5, col='green'), отображает моделируемую функцию. Здесь значения x отображены на оси X, а значения y - на оси Y.
Для смоделированной функции нет явного графика в коде, но с помощью функции points(x, yp, col='black', pch='.', cex=1.5) на график добавляются точки с предсказанными значениями y на основе обученной нейронной сети.
Код программы:
set.seed(9)
x<-runif(50,0,8)
y <- 0.5*sin(x) + cos(2*x) + sqrt(x)
plot(x,y,pch=16,cex=1.5,col='green')
learn=data.frame(x,y)
library(neuralnet)
netcos <- neuralnet (y
x, hidden=4, learn)
set.seed(6)
x<-runif(5000,0,8)
y<-0
test=data.frame(x,y)
yp<-predict(netcos,test)
points(x,yp,col='black',pch='.',cex=1.5)
plot(netcos)
y1=1/(1+exp(-0.44767*x+1.1841))
y2=1/(1+exp(1.59218*x-9.13195))
y3=1/(1+exp(0.61334*x-4.29697) )
y4=1/(1+exp(1.66478*x+4.21321))
set.seed(6)
x <-runif(5000,0,8)
plot(x,y2,col="blue")
points(x,y1,col="red")
points(x,y3,col="green")
points(x,y4,col="yellow")
Рисунок 1 - Модель функции 0.5*sin(x) + cos(2*x) + sqrt(x)
Задание 2
Подобрать структуру hidden и порог функции ошибки threshold для точной аппроксимации заданных последовательностей импульсов. Отчет по работе должен содержать структурную схему обученной сети без указания весов. Графики аппроксимируемой и полученной последовательности для нескольких приближений параметров hidden и threshold.
Программный код:
set.seed(9)
x<-seq(from=-9.5,to =10,by=0.5)
y<-rep(c(1,1,1,1,1,0,0,0,0,0),4)
learn=data.frame(x,y)
library(neuralnet)
netcos<-neuralnet(y
x,learn,hidden=c(10,10),threshold = 0.01)Лаба 1 Задание 1
Задание:
Смоделировать заданную функцию на отрезке [0, 8] с использованием библиотеки neuralnet. Отчет должен содержать подготовку данных для обучения сети. Обоснование выбранной архитектуры. Структурную схему обученной сети с указанием весов. Графики моделируемой и смоделированной функций.
Моделируемая функция
y=0.5*sin(x) + cos(2*x) + sqrt(x)
Ход работы:
Моделируемая функция:
Моделируемая функция, представленная в коде, вычисляется с использованием формулы 0.5*sin(x) + cos(2*x) + sqrt(x). Эта функция комбинирует синус, косинус и квадратный корень от переменной x.
Смоделированная функция
В данном коде нейронная сеть обучается моделировать зависимость между переменными x и y на основе обучающего набора данных. После обучения сети используется функция predict для получения предсказанных значений y на основе нового набора данных.
График, полученный с помощью функции plot(x, y, pch=16, cex=1.5, col='green'), отображает моделируемую функцию. Здесь значения x отображены на оси X, а значения y - на оси Y.
Для смоделированной функции нет явного графика в коде, но с помощью функции points(x, yp, col='black', pch='.', cex=1.5) на график добавляются точки с предсказанными значениями y на основе обученной нейронной сети.
Код программы:
set.seed(9)
x<-runif(50,0,8)
y <- 0.5*sin(x) + cos(2*x) + sqrt(x)
plot(x,y,pch=16,cex=1.5,col='green')
learn=data.frame(x,y)
library(neuralnet)
netcos <- neuralnet (y
netcos2<-neuralnet (y
Загрузка временного ряда "calls".
Создание матрицы LearnSeq размером (n-12) x 13, где n - длина временного ряда.
Заполнение матрицы LearnSeq значениями из временного ряда calls.
Разделение данных на обучающий и тестовый наборы.
Обоснование выбранной архитектуры нейронной сети:
set.seed(55)
net <- neuralnet(formula = form, data = train.data, hidden = 10, threshold = 0.0006)
test.data <- data.frame(inputs)
y.predict <- predict(net, test.data)
print.alphabet(y.predict)
Лабораторная работа № 5
Задание
Построить карты Кохонена для тестовых наборов из ресурса Wine Quality (http://archive.ics.uci.edu/ml/machine-learning-databases/winequality/).
Код программы: