Власні перетворювачі функцій у pipeline
У певний момент вам повідомили, що датчики можуть працювати гірше для людей із ожирінням. Раніше ви враховували це вагами, але тепер думаєте, що ця інформація може бути корисною і для інженерії ознак, тож вирішуєте замінити зафіксовану вагу людини індикатором того, чи має вона ожиріння. Ви хочете зробити це за допомогою pipeline. У вашому розпорядженні є numpy як np, RandomForestClassifier(), FunctionTransformer() та GridSearchCV().
Ця вправа є частиною курсу
Проєктування робочих процесів машинного навчання в Python
Інструкції до вправи
- Визначте власний екстрактор ознак. Це функція, яка повертатиме змінену копію свого вхідного масиву.
- Замініть кожне значення першого стовпця індикатором того, чи перевищує це значення поріг, заданий як кратне середнього цього стовпця.
- Перетворіть екстрактор ознак на трансформер і розмістіть його в pipeline разом із класифікатором випадкового лісу.
- Використайте перехресну перевірку з пошуком по сітці, щоб випробувати значення 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)