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

Пишет что пр выполнении происходит ошибка,нужно исправить код

11.02.2023, 20:49. Показов 1892. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Реализуйте функцию target_coding_solution, которая принимает таблицу и производит в ней целевое кодирование заданного фактора.

Аргументы функции target_coding_solution:

data — исходная таблица;
factor_column — название категориального фактора исходной таблицы, который нужно закодировать;
target_column — название колонки, в которой содержится предсказываемое по данным значение.
Функция target_coding_solution ничего не возвращает. Однако в результате её запуска в исходной таблице должна появиться новая колонка с названием encoded, в которой представлен результат кодирования фактора factor_column.

Результат целевого кодирования для какой-то категории фактора factor_column вычисляется аналогично тому, как это было в лекции: усреднением значений фактора target_column по всем строкам таблицы, относящимся к той же категории. Усреднённое значение должно быть округлено до 2
знаков после запятой с помощью функции round_to_2.

Заготовка для функции target_coding_solution уже реализована в блокноте с задачами этого модуля.

Рекомендации по решению

Для того чтобы вычислить соответствие какой-то категории заданного фактора её значению после целевого кодирования, удобно воспользоваться группировкой (groupby) и агрегацией (aggregate). После этого полезно перевести полученную в результате агрегации таблицу в словарь, который сопоставляет значение категории результату её кодирования.

Достать конкретное значение фактора из строки таблицы можно интуитивно понятным образом, обратившись к строке по названию фактора:

row = table.iloc[0] # первая строка таблицы
print(row[factor_column]) # выведет значение фактора "factor_column" в строке таблицы row
Формат сдачи решения

В качестве ответа на задание приведите код реализованной функции. Важно, что сама функция не должна ссылаться ни на какие внешние переменные, которые определены вне функции. Исключением являются функции из библиотеки pandas, импортированной в переменную pd, и функция round_to_2.

Также в коде функции запрещено использовать ключевое слово import.

Тестирование решения

Для тестирования функции у себя на компьютере можно воспользоваться функцией target_coding_tests, которая реализована в отдельной ячейке блокнота. В случае, если все представленные в файле тесты отработают корректно, в результате запуска target_coding_tests будет напечатана фраза Все тесты прошли успешно!.
Вот мой код
import pandas as pd

def round_to_2(x):
return round(x, 2)

def target_coding_solution(data, factor_column, target_column):
columns_2 = {}
df = pd.DataFrame({'encoded': list(data[factor_column])})
for i in data[factor_column]:
if i not in columns_2:
columns_2[i] = list(data[factor_column]).count(i)
res = {}
for i in range(len(data[factor_column])):
if data.iloc[i][factor_column] not in res:
res[data.iloc[i][factor_column]] = data.iloc[i][target_column]
else:
res[data.iloc[i][factor_column]] += data.iloc[i][target_column]
en = list(df['encoded'])
for i in df['encoded']:
df['encoded'] = df['encoded'].replace(i, round_to_2(res[i] / en.count(i)))
data['encoded'] = df['encoded']
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.02.2023, 20:49
Ответы с готовыми решениями:

Пишет что ошибка, хотя код нормальный
private function select($table_name, $fields, $where = "", $order="", $up = true, $limit = ""){ for ($i = 0; $i < count($fields); $i++)...

Не запускается код. что нужно исправить?
things = {'зажигалка': 20, 'компас': 100, 'фрукты': 500, 'рубашка': 300, 'термос': 1000, 'аптечка': 200, 'куртка': 600, 'бинокль':...

Что происходит при выполнении данной операции?
Не совсем мне понятно удаляются ли данные массива по ссылке вот таким образом : delete &to_arrRef; (как это представлено чуть ниже) ...

5
 Аватар для Semen-Semenich
5230 / 3476 / 1174
Регистрация: 21.03.2016
Сообщений: 8,304
11.02.2023, 21:10
Цитата Сообщение от dfhEJFW Посмотреть сообщение
выполнении происходит ошибка
очень очень секретная ?
0
0 / 0 / 0
Регистрация: 11.02.2023
Сообщений: 3
12.02.2023, 10:39  [ТС]
Я не знаю, у меня все работает прекрасно, но при загрузке на сайт не принимает из-за ошибки выполнения
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
12.02.2023, 11:58
Че тут думать - отступов нет. Ясен пень выполняться не будет

Добавлено через 14 минут
Если серьезно, то ваша проблема, dfhEJFW, в нежелании читать/соблюдать правила. Вы не справились с легким квестом отправки сообщения сюда на форум, думаете с тестирующей системой без знания регламента справитесь?
1
Эксперт Python
8850 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
12.02.2023, 12:07
Лучший ответ Сообщение было отмечено dfhEJFW как решение

Решение

dfhEJFW,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import pandas as pd
 
def round_to_2(x):
    return round(x, 2)
 
def target_coding_solution(data, factor_column, target_column):
    #columns_2 = {}
    #df = pd.DataFrame({'encoded': list(data[factor_column])})
    #for i in data[factor_column]:
        #if i not in columns_2:
            #columns_2[i] = list(data[factor_column]).count(i)
    
    #####
    columns_2 = data.groupby(factor_column)[factor_column].count().to_dict()
    #####
    
    #res = {}
    #for i in range(len(data[factor_column])):
        #if data.iloc[i][factor_column] not in res:
            #res[data.iloc[i][factor_column]] = data.iloc[i][target_column]
        #else:
            #res[data.iloc[i][factor_column]] += data.iloc[i][target_column]
    
    #####
    res = df.groupby(factor_column)[target_column].sum().to_dict()
    #####
    
    #en = list(df['encoded'])
    #for i in df['encoded']:
        #df['encoded'] = df['encoded'].replace(i, round_to_2(res[i] / en.count(i)))
    #data['encoded'] = df['encoded']
    
    #####
    data['encoded'] = data[factor_column].map(lambda x: round_to_2(columns_2[x]/res[x]))
    #####
Добавлено через 1 минуту
Можно в одну строчку и без функции round_to_2…
2
0 / 0 / 0
Регистрация: 11.02.2023
Сообщений: 3
17.02.2023, 20:55  [ТС]
Нужно заменить в res df на data и в последней строчке поменять местами column_2[x] и res[x], и все работает прекрасно ,огромное спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.02.2023, 20:55
Помогаю со студенческими работами здесь

При выполнении процедуры происходит ошибка
Приветствую всех! Господа, у меня есть функция в базе ORACLE. Она без параметров, и возвращает тип cursor. В своём приложении я пытаюсь...

Что происходит при выполнении метода TableAdapter.Update()
Задача сохранять запись при переходи на следующую строку в DataGridView. Реализовывать решил в обработчике событий RowValidating, так...

Можете расписать, что происходит при выполнении каждой строки
Написал программу, вроде бы понимаю что к чему, но хотелось бы прочитать пояснения, а то мало ли #!/usr/bin/python import sys ...

опишите пожалуйста что происходит при выполнении данного кода
Здравствуйте. Я новичок, только начала учить, помогите пожалуйста. <link rel="stylesheet"...

разбирался что такое конструктор чтобы закрепить написал код ,в нём ошибка : пишет переменная не существует в этом контексте.
Доброго времени суток всем , начал учиться программированию , разбирался что такое конструктор чтобы закрепить написал код ,в нём ошибка :...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru