Вторник, 07.04.2026, 15:33Приветствуем вас Гость | RSS
Решение задач в среде R
Главная | Чашка кофе с МО | Регистрация | Вход
» Меню сайта

» R практикум

» R кодинг

» Rmatem

» Опрос
Сколько вам лет?
Всего ответов: 9

» Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Модель охлаждения кофе в чашке с машинным обучением

Первым делом создадим векторы исходных данных: время Time = 1:40 и изменение температуры Temp. Далее выполняем конструкцию приведенную ниже (все необходимые пояснения приводятся по мере необходимости).

# Регрессия Temp ~ log(Time))
# остывание чашки кофе с машинным обучением
Time = 1:40
Temp = c(82.5, 77.7, 74.5, 71.8, 68.8, 66.5, 64.4, 62.6, 60.8, 59.1,
      57.6, 56.2, 55, 53.8, 52.7, 51.6, 50.6, 49.9, 49, 48.2,
      47.3, 46.6, 45.9, 45.2, 44.6, 44, 43.4, 42.9, 42.3, 41.8,
      41.3, 40.9, 40.5, 40, 39.7, 39.3, 38.9,
      38.6, 38.3, 37.9)
Tcoffee = data.frame(Time, Temp)
plot(Time, Temp, xlab = "Время", ylab = "Температура кофе в чашке")
grid(15, col = "black")

mdlog = lm(Temp ~ log(Time))
Timen = Time
xp = data.frame(Time = Timen)
Tempn = predict(mdlog, xp)
lines(Timen, Tempn)
error = Tempn - Temp
ansprd = data.frame(Time, Temp, Tempn, error)
tail(ansprd)
cor(Temp, Tempn)

> tail(ansprd)
   Time Temp    Tempn     error
35   35 39.7 40.43928 0.7392846
36   36 39.3 40.05494 0.7549418
37   37 38.9 39.68113 0.7811302
38   38 38.6 39.31729 0.7172882
39   39 38.3 38.96290 0.6628976
40   40 37.9 38.61748 0.7174800
> cor(Temp, Tempn)
[1] 0.9925416


# экстраполяция 
Timen = 1:180
xp = data.frame(Time = Timen)
Tempn = predict(mdlog, xp)
plot(Timen, Tempn, 'l', lwd=2, col='red')
points(Time, Temp)
grid(col='black')
# функция зависимость темературы от времени
f = function(Timen){
  xp = data.frame(Time = Timen)
  predict(mdlog, xp)
  }

#==============================================
# машинное обучение делим данные Tcoffee
# на обучающую 70% и тестовую 30% выборки
set.seed (5)
#use 70% of dataset as training set and 30% as test set
sample = sample(c(TRUE ,FALSE), nrow(Tcoffee), 
                replace= TRUE , prob=c(0.7 ,0.3))
train = Tcoffee[sample, ]
test = Tcoffee[!sample, ]
#----------------------------------
# обучаем модель lern на обучающей выборке train
lern = lm(Temp ~ log(Time), data = train)
#------------------------------------
# тест обученой модели на тестовой выборке
Ttest = predict(lern, data.frame(Time = test$Time))
#--------------------------------------------------
# сравнение данных модели машинного обучения
# тестовой выборки эмперич и расчетных
error = test$Temp - Ttest
ans = data.frame(test, Ttest, error)
ans

   Time Temp    Ttest        error
3     3 74.5 73.33040  1.169603443
6     6 66.5 64.05551  2.444485726
8     8 62.6 60.20609  2.393909675
9     9 60.8 58.63006  2.169944061
18   18 49.9 49.35517  0.544826344
20   20 48.2 47.94536  0.254637142
21   21 47.3 47.29251  0.007489872
22   22 46.6 46.67003 -0.070033862
28   28 42.9 43.44309 -0.543086179
30   30 41.8 42.51990 -0.719904524

Полный скрипт найдете ниже:

# Регрессия Temp ~ log(Time))
# остывания чашки кофе с машинным обучением
Time = 1:40
Temp = c(82.5, 77.7, 74.5, 71.8, 68.8, 66.5, 64.4, 62.6, 60.8, 59.1,
      57.6, 56.2, 55, 53.8, 52.7, 51.6, 50.6, 49.9, 49, 48.2,
      47.3, 46.6, 45.9, 45.2, 44.6, 44, 43.4, 42.9, 42.3, 41.8,
      41.3, 40.9, 40.5, 40, 39.7, 39.3, 38.9,
      38.6, 38.3, 37.9)
Tcoffee = data.frame(Time, Temp)
plot(Time, Temp, xlab = "Время", ylab = "Температура кофе в чашке")
grid(15, col = "black")

mdlog = lm(Temp ~ log(Time))
Timen = Time
xp = data.frame(Time = Timen)
Tempn = predict(mdlog, xp)
lines(Timen, Tempn)
error = Tempn - Temp
ansprd = data.frame(Time, Temp, Tempn, error)
tail(ansprd)
cor(Temp, Tempn)
# экстраполяция 
Timen = 1:180
xp = data.frame(Time = Timen)
Tempn = predict(mdlog, xp)
plot(Timen, Tempn, 'l', lwd=2, col='red')
points(Time, Temp)
grid(col='black')
# функция зависимость темературы от времени
f = function(Timen){
  xp = data.frame(Time = Timen)
  predict(mdlog, xp)
  }
#==============================================
# машинное обучение делим данные Tcoffee
# на обучающую 70% и тестовую 30% выборки
set.seed (5)
#use 70% of dataset as training set and 30% as test set
sample = sample(c(TRUE ,FALSE), nrow(Tcoffee), 
                replace= TRUE , prob=c(0.7 ,0.3))
train = Tcoffee[sample, ]
test = Tcoffee[!sample, ]
#----------------------------------
# обучаем модель lern на обучающей выборке train
lern = lm(Temp ~ log(Time), data = train)
#------------------------------------
# тест обученой модели на тестовой выборке
Ttest = predict(lern, data.frame(Time = test$Time))
#--------------------------------------------------
# сравнение данных модели машинного обучения
# тестовой выборки эмперич и расчетных
error = test$Temp - Ttest
ans = data.frame(test, Ttest, error)
ans
 

» Вход на сайт

» Поиск

» Работа с файлами

» Вся графика

» Гистогра́мма

» Теория вероятности

» Сравнение групп

» Дисперс анализ

» Блог

» Календарь
«  Апрель 2026  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
27282930

» Архив записей


Copyright MyCorp © 2026
uCoz