0 / 0 / 0
Регистрация: 28.10.2020
Сообщений: 19

Реализовать функцию Mean Squared Error (MSE) - среднеквадратичная ошибка

29.10.2020, 11:04. Показов 13396. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Задача стояла такая.
MSE. Реализовать функцию Mean Squared Error (MSE) - среднеквадратичная ошибка. Сумма квадратов отклонений реального значения функции от смоделированного значения, делённая на количество значений. Часто применяемая метрика для моделей машинного обучения и анализа данных. В случае списков разной длины вызывать исключение.

Понятно, что есть модули которое вычисляет, но мне надо было через функции.
И вот прошу оцените, и проверьте пожалуйста. может что-то не так.(да-да,скорее всего скажете "с головой не так"))
Вроде все работает.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# MSE. Реализовать функцию Mean Squared Error (MSE) - среднеквадратичная ошибка. 
# Сумма квадратов отклонений реального значения функции от смоделированного значения, делённая на количество значений. 
# Часто применяемая метрика для моделей машинного обучения и анализа данных. 
# В случае списков разной длины вызывать исключение.
 
list1 = [15.0, 16.0, 49.0, 25.0, 23.0, 16.0, 59.0]
list2 = [12.0, 24.0, 86.0, 23.0, 15.0, 26.0, 25.0]
if len(list1) != len(list2):
    print('list not equal')
else:        
    print('Реальные значения функции: ', list1)
    print('Смоделированные значения функции:', list2)
    def MSE(list1,list2):
        '''Реализовать функцию Mean Squared Error (MSE) среднеквадратичная ошибка'''
        summ_MSE = 0
        for i in range(len(list1)):
            summ_MSE += (list1[i] - list2[i])**2
        MSE = summ_MSE/len(list1)
        return MSE
    print('Mean Squared Error (MSE) - среднеквадратичная ошибка = ', MSE(list1, list2))
Python
1
2
3
Реальные значения функции:  [15.0, 16.0, 49.0, 25.0, 23.0, 16.0, 59.0]
Смоделированные значения функции: [12.0, 24.0, 86.0, 23.0, 15.0, 26.0, 25.0]
Mean Squared Error (MSE) - среднеквадратичная ошибка =  395.14285714285717
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.10.2020, 11:04
Ответы с готовыми решениями:

Не получается подключить функцию, ошибка: Fatal error: Cannot redeclare
Здравствуйте, помогите пожалуйста. Не получается подключить функцию! Выдаёт вот такую ошибку: "Fatal error: Cannot redeclare...

chi squared approximation algorithm
Привет ребята. Подскажите может кто решал подобную задачу. Имеется бинарный файл. Как мне вычислить хи-квадрат ко всему файловому...

Безопасность: a-squared HiJackFree v.2.0.0.352
a-squared HiJackFree — полезная утилита для детального анализа системы, которая поможет пользователям определить и удалить из ПК все типы...

12
Эксперт по компьютерным сетямЭксперт Pascal/Delphi
 Аватар для TAVulator
4191 / 1292 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
29.10.2020, 11:21
Зачем ф-ция MSE внутри if-else? Почему не снаружи?
и можно немного сократить:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
list1 = [15.0, 16.0, 49.0, 25.0, 23.0, 16.0, 59.0]
list2 = [12.0, 24.0, 86.0, 23.0, 15.0, 26.0, 25.0]
 
 
def MSE(list1,list2):
    '''Реализовать функцию Mean Squared Error (MSE) среднеквадратичная ошибка'''
    return sum([(x-y)**2 for x,y in zip(list1,list2)])/len(list1)
 
 
if len(list1) != len(list2):
    print('list not equal')
else:        
    print('Реальные значения функции: ', list1)
    print('Смоделированные значения функции:', list2)
    
    print('Mean Squared Error (MSE) - среднеквадратичная ошибка = ', MSE(list1, list2))
0
0 / 0 / 0
Регистрация: 28.10.2020
Сообщений: 19
29.10.2020, 12:49  [ТС]
внутри, т.к. принты ненужные выводились,и значение функции тоже выводилось не так.

Спасибо. только вот с "zip" есчё не знакома.

Добавлено через 2 минуты
Цитата Сообщение от TAVulator Посмотреть сообщение
'''Реализовать функцию Mean Squared Error (MSE) среднеквадратичная ошибка'''
    return sum([(x-y)**2 for x,y in zip(list1,list2)])/len(list1)
а если "list2" ,будет короче?

Добавлено через 2 минуты
а функцию MSE будет вычислена все равно, даже если и списки разные
0
Эксперт по компьютерным сетямЭксперт Pascal/Delphi
 Аватар для TAVulator
4191 / 1292 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
29.10.2020, 12:51
Лучший ответ Сообщение было отмечено Marina12346 как решение

Решение

Цитата Сообщение от Marina12346 Посмотреть сообщение
а если "list2" ,будет короче?
то функция не будет вызвана, т.к.
Цитата Сообщение от TAVulator Посмотреть сообщение
if len(list1) != len(list2):
    print('list not equal')
Добавлено через 1 минуту
Цитата Сообщение от Marina12346 Посмотреть сообщение
а функцию MSE будет вычислена все равно, даже если и списки разные
можете внутри функции добавить проверку равности списков, и если они не равны, то в return вернуть что-то другое
1
0 / 0 / 0
Регистрация: 28.10.2020
Сообщений: 19
29.10.2020, 13:20  [ТС]
О, отличная идея, не додумалась.))
Спасибо!)))

Добавлено через 25 минут
TAVulator,
есчё раз не поможешь?
что я делаю не так??
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Без функции max
# В качестве iterable можно любую итерируемую структуру данных.
 
iterable = {5,6,19,15,236,1256689,23}
# iterable = [5,16,19,26,34,26]
# iterable = {25 : 25,15 : 36, 2 : -26, 3 : 156}
# iterable = (1, 5, 9, 8, -15 , 20.5, -2.3, 0)
 
def my_max(iterable):
    '''Вычисляет максимальный элемент итерируемого контейнера'''
    for elem in iterable:
        if elem >= max_elem_iterable:
            max_elem_iterable = elem
        
    
        return max_elem_iterable
print(iterable)
print (my_max(iterable))
Добавлено через 1 минуту
while использовать?
да она не дописана. она проверяет больше и все. и не могу понять как сделать, чтобы дальше шла по элементам последовательности
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
29.10.2020, 13:27
Цитата Сообщение от Marina12346 Посмотреть сообщение
Вычисляет максимальный элемент итерируемого контейнера
С max(list) тоже незнакомы? Знакомьтесь, это max.
0
0 / 0 / 0
Регистрация: 28.10.2020
Сообщений: 19
29.10.2020, 13:31  [ТС]
именно, что без функции "max" хочется сделать

Добавлено через 1 минуту
Цитата Сообщение от Marina12346 Посмотреть сообщение
# Без функции max
вот же
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
29.10.2020, 13:40
Цитата Сообщение от Marina12346 Посмотреть сообщение
что без функции "max" хочется сделать
Зачем? Это будет в 100 раз медленнее.
А для реальных задач ML и DS вы тоже будете велосипеды писать?

Цитата Сообщение от Marina12346 Посмотреть сообщение
как сделать, чтобы дальше шла по элементам последовательности
return уберите из цикла. И найдите наконец 150000 примеров реализации этого элементарного алгоритма.
0
0 / 0 / 0
Регистрация: 28.10.2020
Сообщений: 19
29.10.2020, 13:52  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Зачем? Это будет в 100 раз медленнее.
Чисто для тренировки, а не для скорости.
Спасибо!
0
Эксперт по компьютерным сетямЭксперт Pascal/Delphi
 Аватар для TAVulator
4191 / 1292 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
29.10.2020, 15:17
Цитата Сообщение от Marina12346 Посмотреть сообщение
if elem >= max_elem_iterable:
кто такой max_elem_iterable?
0
0 / 0 / 0
Регистрация: 28.10.2020
Сообщений: 19
29.10.2020, 17:09  [ТС]
Цитата Сообщение от TAVulator Посмотреть сообщение
кто такой max_elem_iterable?
Ах, это переменная, в которую я записывала максимальные значения..перед for была
я ей сначала присвоила значение "0", но при отрицательных элементах, условие бы никогда не выполнялось.
удалила и сюда скинула видимо..(((

Добавлено через 7 минут
я понимаю, будете смеяться и критиковать, но додумалась только до этого..
Python
1
2
3
4
5
max_elem_iterable = -10**100
    for elem in iterable:
        if elem > max_elem_iterable:
            max_elem_iterable = elem
    return max_elem_iterable
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
29.10.2020, 17:55
Лучший ответ Сообщение было отмечено Marina12346 как решение

Решение

Цитата Сообщение от Marina12346 Посмотреть сообщение
но додумалась только до этого..
Python
1
max_elem_iterable = iterable[0]
Поиск максимума с чего-то ведь начинается... с первого элемента.

Добавлено через 2 минуты
А если однажды понадобится значение, которое меньше(больше) любого другого - не надо ничего генерировать, в любом языке есть специальные значения:
Python
1
2
3
4
5
>>> -10**100
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
>>> float("-inf") < -10**100
True
>>>
0
0 / 0 / 0
Регистрация: 28.10.2020
Сообщений: 19
29.10.2020, 18:29  [ТС]
Спасибо))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.10.2020, 18:29
Помогаю со студенческими работами здесь

Среднеквадратичная аппроксимация табличных функций
Доброго времени суток. Помогите, пожалуйста, программно реализовать среднеквадратичную аппроксимацию табличных функций.

Ошибка при добавлении в файл. Ошибка 101: Ошибка записи на диск (Error 101: Disk write error).
Здравствуйте, возникла проблема такого плана. Нужно произвести добавление записи в файл, но после успешного создания и чтения вылазиет...

Среднеквадратичная аппроксимация функций заданных таблично
Добрый вечер. Помогите, пожалуйста, завтра уже сдавать, а я до сих пор не разобрался( Прошу( Тема: Среднеквадратическая аппроксимация...

DLE ошибка, с чего решать MySQL Error! The Error returned was: MySQL server has gone away Error Number 2006
MySQL Error! ------------------------ The Error returned was: MySQL server has gone away Error Number: 2006 ...

MSE
Predict 2 x 1 Actual 2 x 1 MSE = 1/n * (Actual / Predict)^2 Какое тут n ? n = 1, n = 2?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru