X_train
------------------------------------------------------------------------------------------
| bias | word.lower | word[-3:] | word.isupper | word.isdigit | POS | BOS | EOS |
------------------------------------------------------------------------------------------
0 | 1.0 | headache, | HE, | True | False | NNP | True | False |
1 | 1.0 | mostly | tly | False | False | NNP | False | False |
2 | 1.0 | but | BUT | True | False | NNP | False | False |
...
...
...
y_train
------------
| OBI |
------------
0 | B-ADR |
1 | O |
2 | O |
...
...
...
Я пытаюсь выполнить распознавание сущности имени (NER) с помощью Дерева решений. Фрейм данных моих функций и фрейм данных меток выглядят так, как показано выше. Когда я запускаю следующий код, он возвращает ValueError: could not convert string to float: 'headache,'
. Правильно ли представлены мои данные (я следую этому руководству а>)? Должны ли функции быть числами с плавающей запятой для многоклассовой классификации по дереву решений? Если да, то как мне продолжить маркировку OBI, учитывая, что большинство функций токенов, если не все, являются строковыми или логическими?
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
DT = DecisionTreeClassifier()
DT.fit(X_train, y_train)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-15-aa02be64ac27> in <module>
1 DT = DecisionTreeClassifier()
----> 2 DT.fit(X_train, y_train)
d:\python\lib\site-packages\sklearn\tree\_classes.py in fit(self, X, y, sample_weight, check_input, X_idx_sorted)
888 """
889
--> 890 super().fit(
891 X, y,
892 sample_weight=sample_weight,
d:\python\lib\site-packages\sklearn\tree\_classes.py in fit(self, X, y, sample_weight, check_input, X_idx_sorted)
154 check_X_params = dict(dtype=DTYPE, accept_sparse="csc")
155 check_y_params = dict(ensure_2d=False, dtype=None)
--> 156 X, y = self._validate_data(X, y,
157 validate_separately=(check_X_params,
158 check_y_params))
d:\python\lib\site-packages\sklearn\base.py in _validate_data(self, X, y, reset, validate_separately, **check_params)
427 # :(
428 check_X_params, check_y_params = validate_separately
--> 429 X = check_array(X, **check_X_params)
430 y = check_array(y, **check_y_params)
431 else:
d:\python\lib\site-packages\sklearn\utils\validation.py in inner_f(*args, **kwargs)
70 FutureWarning)
71 kwargs.update({k: arg for k, arg in zip(sig.parameters, args)})
---> 72 return f(**kwargs)
73 return inner_f
74
d:\python\lib\site-packages\sklearn\utils\validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, estimator)
596 array = array.astype(dtype, casting="unsafe", copy=False)
597 else:
--> 598 array = np.asarray(array, order=order, dtype=dtype)
599 except ComplexWarning:
600 raise ValueError("Complex data not supported\n"
d:\python\lib\site-packages\numpy\core\_asarray.py in asarray(a, dtype, order)
83
84 """
---> 85 return array(a, dtype, copy=False, order=order)
86
87
ValueError: could not convert string to float: 'headache,'