НачатьНачать бесплатно

Пользовательские функции-трансформеры в конвейерах

Вам сообщили, что датчики могут плохо работать для людей с ожирением. Ранее вы учитывали это с помощью весовых коэффициентов, но теперь решили, что эта информация может быть полезна и для конструирования признаков. Поэтому вы хотите заменить зафиксированный вес человека индикатором того, страдает ли он ожирением, и реализовать это с помощью конвейеров. В вашем распоряжении есть numpy под именем np, а также RandomForestClassifier(), FunctionTransformer() и GridSearchCV().

Это упражнение является частью курса

Проектирование рабочих процессов машинного обучения на Python

Посмотреть курс

Инструкции к упражнению

  • Определите пользовательскую функцию извлечения признаков. Эта функция должна возвращать изменённую копию входных данных.
  • Замените каждое значение первого столбца индикатором того, превышает ли оно порог, равный произведению среднего значения столбца на заданный множитель.
  • Преобразуйте функцию извлечения признаков в трансформер и включите его в конвейер вместе с классификатором на основе случайного леса.
  • С помощью решётчатого поиска с кросс-валидацией проверьте значения 1, 2 и 3 для константы умножения multiplier в вашей функции извлечения признаков.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Define a feature extractor to flag very large values
def more_than_average(X, multiplier=1.0):
  Z = ____
  Z[:,1] = ____ > multiplier*np.mean(Z[:,1])
  return Z

# Convert your function so that it can be used in a pipeline
pipe = Pipeline([
  ('ft', ____(____)),
  ('clf', RandomForestClassifier(random_state=2))])

# Optimize the parameter multiplier using GridSearchCV
params = ____
grid_search = GridSearchCV(pipe, param_grid=params)
Редактировать и запускать код