Решаю задачу в ходе онлайн обучения по машинной обучению
Python 3.8
Windows 10
Добавьте к признакам one-hot переменную, которая равна 1 (или True) для двух аномальных дней и 0 (или False) во все остальные дни. Для этого вам понадобиться модифицировать функцию create_features.
На выходе из функции вы должны получить dataframe с 3 признаками: day, hour и anomaly. Подсказка: сделать это можно всего за 3 применения .apply()
def create_features(data_frame):
X = pd.concat([
data_frame.pickup_datetime.apply(lambda x: x.timetuple().tm_yday),
data_frame.pickup_datetime.apply(lambda x: x.hour),
data_frame.pickup_datetime.apply(lambda x: x.day == 24) - ошибка в этой строке - никак не получается задать для исключения дни 23 и 24
], axis=1, keys=['day', 'hour', 'anomaly'])
return X, data_frame.pickup_datetime
new_X_train, new_y_train = create_features(df_train)
new_X_test, new_y_test = create_features(df_test)
# your code here
ohe = ColumnTransformer([("anomaly", OneHotEncoder(sparse=False),[2])], remainder="passthrough")
new_X_train = ohe.fit_transform(X_train)
new_X_test = ohe.transform(X_test)
В итоге при проверке кода получается ошибка
AssertionError: Значение признака anomaly для сэмплов не 23.01 и 24.01 должно равняться False или 0
Python 3.8
Windows 10
Добавьте к признакам one-hot переменную, которая равна 1 (или True) для двух аномальных дней и 0 (или False) во все остальные дни. Для этого вам понадобиться модифицировать функцию create_features.
На выходе из функции вы должны получить dataframe с 3 признаками: day, hour и anomaly. Подсказка: сделать это можно всего за 3 применения .apply()
def create_features(data_frame):
X = pd.concat([
data_frame.pickup_datetime.apply(lambda x: x.timetuple().tm_yday),
data_frame.pickup_datetime.apply(lambda x: x.hour),
data_frame.pickup_datetime.apply(lambda x: x.day == 24) - ошибка в этой строке - никак не получается задать для исключения дни 23 и 24
], axis=1, keys=['day', 'hour', 'anomaly'])
return X, data_frame.pickup_datetime
new_X_train, new_y_train = create_features(df_train)
new_X_test, new_y_test = create_features(df_test)
# your code here
ohe = ColumnTransformer([("anomaly", OneHotEncoder(sparse=False),[2])], remainder="passthrough")
new_X_train = ohe.fit_transform(X_train)
new_X_test = ohe.transform(X_test)
В итоге при проверке кода получается ошибка
AssertionError: Значение признака anomaly для сэмплов не 23.01 и 24.01 должно равняться False или 0