Ошибка при обучении XgboostClassifier на текстовых данных
Вот пример моих данных на которых я обучаю модель. Как мне обработать данные чтобы обучение не выдавало ошибки?
"idx": 0, "passage": {"text": "\"(1) Издательство Viking Press совместно с компанией TradeMobile выпустят мобильное приложение, посвященное Анне Франк, передает The Daily Telegraph. (2) Программа будет включать в себя фрагменты из дневника Анны, озвученные британской актрисой Хеленой Бонэм Картер. (3) Помимо этого, в приложение войдут фотографии и видеозаписи, документы из архива Фонда Анны Франк, план здания в Амстердаме, где Анна с семьей скрывались от нацистов, и факсимильные копии страниц дневника. (4) Приложение, которое получит название Anne Frank App, выйдет 18 октября. (5) Интерфейс программы будет англоязычным. (6) На каких платформах будет доступно Anne Frank App, не уточняется. Анна Франк родилась в Германии в 1929 году. (7) Когда в стране начались гонения на евреев, Анна с семьей перебрались в Нидерланды. (8) С 1942 года члены семьи Франк и еще несколько человек скрывались от нацистов в потайных комнатах дома в Амстердаме, который занимала компания отца Анны. (9) В 1944 году группу по доносу обнаружили гестаповцы. (10) Обитатели \"Убежища\" (так Анна называла дом в дневнике) были отправлены в концлагеря; выжить удалось только отцу девочки Отто Франку. (11) Находясь в \"Убежище\", Анна вела дневник, в котором описывала свою жизнь и жизнь своих близких. (12) После ареста книгу с записями сохранила подруга семьи Франк и впоследствии передала ее отцу Анны. (13) Дневник был впервые опубликован в 1947 году. (14) Сейчас он переведен более чем на 60 языков.\"", "questions": [{"question": "О чем дневник Анны Франк?", "answers": [{"idx": 0, "text": "Дневник об отметках Анны."}, {"idx": 1, "text": "Дневник о школьных годах девочки Анны."}, {"idx": 2, "text": "О жизни еврейской девочки во время гонения евреев нацистами."}, {"idx": 3, "text": "Анна описывала свою жизнь и жизнь близких, когда скрывалась от нацистов."}], "idx": 0}, {"question": "Каким будет приложение Anne Frank App?", "answers": [{"idx": 4, "text": "Приложение будет платным."}, {"idx": 5, "text": "Приложение будет англоязычным."}, {"idx": 6, "text": "Приложение будет на еврейском языке."}, {"idx": 7, "text": "Приложение будет посвящено Анне Франк и основано на записях в её дневнике."}], "idx": 1} {"question": "Какая информация войдет в новой мобильное приложение?", "answers": [{"idx": 8, "text": "Карта Нидерландов."}, {"idx": 9, "text": "Программа будет включать в себя фрагменты из дневника Анны, озвученные британской актрисой Хеленой Бонэм Картер."}, {"idx": 10, "text": "Видеозаписи Анны Франк."}, {"idx": 11, "text": "В приложение войдут фотографии и видеозаписи, документы из архива Фонда Анны Франк, план здания в Амстердаме, где Анна с семьей скрывались от нацистов, и факсимильные копии страниц дневника."}], "idx": 2}, {"question": "Где скрывались члены семьи Франк и другие евреи?", "answers": [{"idx": 12, "text": "В концлагере."}, {"idx": 13, "text": "В Германии."}, {"idx": 14, "text": "Они скрывались в \"Убежище\"."}, {"idx": 15, "text": "Они скрывались от нацистов в потайных комнатах дома в Амстердаме."}], "idx": 3}, {"question": "Как Анна называла место, где она и ее семья скрывались от нацистов?", "answers": [{"idx": 16, "text": "Она называла его Убежищем."}, {"idx": 17, "text": "Убежище."}, {"idx": 18, "text": "Потайная комната."}, {"idx": 19, "text": "Амстердамом."}, {"idx": 20, "text": "Концлагерем."}], "idx": 4}, {"question": "Как будет называться приложение, посвященное Анне Франк и включающее фрагменты ее дневника?", "answers": [{"idx": 21, "text": "Отто Франк."}, {"idx": 22, "text": "Анна Франк."}, {"idx": 23, "text": "Анна Ванна."}, {"idx": 24, "text": "Хелена Бонэм Картер."}, {"idx": 25, "text": "Anne Frank App."}], "idx": 5}, {"question": "Когда в первый раз была опубликована книга с записями Анны Франк? ", "answers": [{"idx": 26, "text": "В 1946 году."}, {"idx": 27, "text": "Тогда был 1948 год."}, {"idx": 28, "text": "Тогда был 1947 год."}, {"idx": 29, "text": "В 1947 году."}, {"idx": 30, "text": "В 1948 году."}], "idx": 6}, {"question": "На сколько языков переведён дневник?", "answers": [{"idx": 31, "text": "Более чем на 60 языков."}, {"idx": 32, "text": "Более 300."}, {"idx": 33, "text": "Более 100."}, {"idx": 34, "text": "Более 60."}, {"idx": 35, "text": "Более чем на 100 языков."}], "idx": 7}, {"question": "Кто озвучивал фрагменты книжки с записями, впервые опубликованной в 1947 году?", "answers": [{"idx": 36, "text": "Хелена Бонэм Картер."}, {"idx": 37, "text": "Милена Бонэм Картер."}, {"idx": 38, "text": "Актриса Анна Картер."}, {"idx": 39, "text": "Анна Картер."}, {"idx": 40, "text": "Актриса Хелена Бонэм Картер."}], "idx": 8}, {"question": "Где родилась автор книги, на основе которой издательство Viking Press выпустит мобильное приложение?", "answers": [{"idx": 41, "text": "Девочка родилась в Нидерландах."}, {"idx": 42, "text": "В Германии."}, {"idx": 43, "text": "Девочка родилась в Германии."}, {"idx": 44, "text": "В Польше."}, {"idx": 45, "text": "В Нидерландах."}], "idx": 9}]}}
Функция обработки данных
from sklearn.model_selection import train_test_split
def get_X_y(data_json_file):
X, y = [], []
with open(data_json_file, 'r', encoding='utf-8') as json_file:
json_list = list(json_file)
print(json_list[0])
for json_str in json_list:
item = json.loads(json_str)
text = item['passage']['text']
print(item['passage'].keys())
questions = item['passage']['questions']
for q in questions:
query = q['question']
ans = q['answers']
for a in ans:
X.append(text+' Query: '+query+' Answer: '+a['text'])
y.append(a['label'])
return X, y
При обучении данных
xgb.fit(X_train, y_train)
Выводит ошибку
/usr/local/lib/python3.6/dist-packages/sklearn/preprocessing/_label.py:235: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
y = column_or_1d(y, warn=True)
/usr/local/lib/python3.6/dist-packages/sklearn/preprocessing/_label.py:268: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
y = column_or_1d(y, warn=True)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-16-50ed2ed73df9> in <module>()
----> 1 xgb.fit(X_train, y_train)
2 frames
/usr/local/lib/python3.6/dist-packages/xgboost/core.py in _maybe_pandas_data(data, feature_names, feature_types)
237 msg = """DataFrame.dtypes for data must be int, float or bool.
238 Did not expect the data types in fields """
--> 239 raise ValueError(msg + ', '.join(bad_fields))
240
241 if feature_names is None:
TypeError: sequence item 0: expected str instance, int found