Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/64: Рейтинг темы: голосов - 64, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 28.10.2020
Сообщений: 19

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

29.10.2020, 11:04. Показов 13357. Ответов 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 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru