Код, запускаемый в блокноте jupyter, работает иначе, чем в чистом Python.
В течение многих лет я использовал ноутбуки Jupyter для создания прототипов и тестирования кода, прежде чем помещать его в модули для импорта. Однако во время работы над этим проектом несколько раз один и тот же код работал по-разному в jupyter и в импортированном чистом файле python. Самый последний пример этого:
Я использую пользовательскую оболочку OneHotEncoder от scikit-learn для кодирования моего фрейма данных pandas в качестве шага предварительной обработки для моего конвейера машинного обучения. Вот функция в моем чистом файле Python
def fit(data):
encoder = Encoder()
prepared = encoder.prep(data)
encoded_data = encoder.fit_transform(prepared)
encoder.fit_onehot(encoded_data)
Когда я импортирую этот код и запускаю его, я получаю сообщение об ошибке
ValueError: не удалось преобразовать строку в число с плавающей точкой: 'AL'
Тем не менее, когда я запускаю этот код в блокноте jupyterlab, используя EXACT тот же самый фрейм данных
encoder = Encoder()
prepared = encoder.prep(data)
encoded_data = encoder.fit_transform(prepared)
encoder.fit_onehot(encoded_data)
все работает совершенно нормально.
Я не могу понять, что на самом деле не так, потому что я не могу повторить это поведение на своей игровой площадке (jupyter).
Дополнительная информация:
- Серия бета-версий JupyterLab, версия 0.32.1
- Python 3.6.1