Я получаю ValueError: 'Значение истинности массива с более чем одним элементом неоднозначно.Используйте a.any () или a.all () ' при подборе моих данных, которые ранее были разбиты на наборы поездов и тестов.Как устранить эту ошибку?
Я уже проверил, правильно ли были разделены мои данные, используя свойство shape и напечатав заголовок каждого X, y train инаборы тестов.
data - это DataFrame, который состоит из одного 'text' столбца и шести столбцов меток.
features X - векторизованные тексты
метки y - метки
data [['text']] - это DataFrame векторов
data [['1',' 2 ',' 3 ',' 4 ',' 5 ',' 6 ']] - Фрейм данных меток
Обновление
Проблема действительно былас моими исходными данными, поскольку некоторые из моих векторов имели действительно искаженную форму (например, (19,1)).Метод flatten () , похоже, решил проблему, так как он возвращает копию массива, свернутого в одно измерение.
Вот как я разделяю данные:
from sklearn.model_selection import train_test_split
X_test, X_train, y_test, y_train = train_test_split(data[['text']],data [ ['1' ,'2' , '3' , '4' ,'5','6' ] ] , random_state=42, test_size=0.30, shuffle=True)
А вот подходящая деталь:
my_classifier = LabelPowerset(classifier = RandomForestClassifier(n_estimators=100),require_dense = [False, True])
my_classifier.fit(X_train, y_train)
print(X_test.shape)
print(X_train.shape)
print(y_test.shape)
print(y_train.shape)
Выход:
(111699, 1)
(47872, 1)
(111699, 6)
(47872, 6)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-94-a59b7690b804> in <module>()
----> 1 my_classifier.fit(X_train, y_train)
~\Anaconda3\lib\site-packages\skmultilearn\problem_transform\lp.py in fit(self, X, y)
136 """
137 X = self._ensure_input_format(
--> 138 X, sparse_format='csr', enforce_sparse=True)
139
140 self.classifier.fit(self._ensure_input_format(X),
~\Anaconda3\lib\site-packages\skmultilearn\base\base.py in _ensure_input_format(self, X, sparse_format, enforce_sparse)
95 return X
96 else:
---> 97 return matrix_creation_function_for_format(sparse_format)(X)
98
99 def _ensure_output_format(self, matrix, sparse_format='csr', enforce_sparse=False):
~\Anaconda3\lib\site-packages\scipy\sparse\compressed.py in __init__(self, arg1, shape, dtype, copy)
77 self.format)
78 from .coo import coo_matrix
---> 79 self._set_self(self.__class__(coo_matrix(arg1, dtype=dtype)))
80
81 # Read matrix dimensions given, if any
~\Anaconda3\lib\site-packages\scipy\sparse\coo.py in __init__(self, arg1, shape, dtype, copy)
183 self._shape = check_shape(M.shape)
184
--> 185 self.row, self.col = M.nonzero()
186 self.data = M[self.row, self.col]
187 self.has_canonical_format = True
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
X_train.head(5)
Выход:
text
119105 [0.070629984, 0.09145695, 0.026743168, -0.0247...
131631 [0.15062076, 0.1616201, -0.24214625, -0.079838...
125326 [0.29536337, 0.148198, 0.19248627, 0.21796156,...
111256 [0.16876991, 0.035899613, -0.06388393, -0.2339...
83590 [0.14012083, 0.08112805, -0.079143375, -0.0808...
y_train.head(5)
Вывод:
1 2 3 4 5 6
2783 0 0 0 0 0 0
109183 0 0 0 0 0 0
96229 0 0 0 0 0 0
128796 1 0 1 0 1 0
103592 0 0 0 0 0 0
Как выглядит весь вектор в X_train на строку:
[ 4.0938530e-02 2.0466107e-01 2.3541172e-01 -2.2121635e-01
-1.6204901e-01 -2.3460600e-01 9.9785912e-01 -2.0803943e-01
-9.1773011e-02 7.8154532e-03 -4.5910537e-02 1.6967587e-01
-4.1978297e+00 -2.0136276e-01 1.3398567e-03 6.2967308e-02
2.1797931e-01 -3.2942373e-01 -1.3567382e-01 -3.2139298e-01
-1.1644501e-01 3.7298296e-02 -3.3780817e-02 -1.4053656e-01
-2.2851831e-01]
y_train.all()
Вывод:
1 False
2 False
3 False
4 False
5 False
6 False
dtype: bool
y_train.any()
Выход:
1 True
2 True
3 True
4 True
5 True
6 True
dtype: bool