Ошибка исходит из способа X, как было сделано.Вы не можете использовать непосредственно X в методе Fit.Вам нужно сначала преобразовать его немного больше (я не мог бы сказать вам, что для другой проблемы, поскольку у меня не было информации)
сейчас у вас есть следующее:
array([<1x23 sparse matrix of type '<class 'numpy.int64'>'
with 5 stored elements in Compressed Sparse Row format>,
...
<1x23 sparse matrix of type '<class 'numpy.int64'>'
with 3 stored elements in Compressed Sparse Row format>], dtype=object)
Что достаточно для раскола.Мы просто собираемся преобразовать его, как вы понимаете, так же, как и метод подгонки:
X = list([list(x.toarray()[0]) for x in X])
Что мы делаем, это конвертируем разреженную матрицу в массив с пустым фрагментом, берём первый элемент (он имеет только один элемент)и затем преобразовать его в список, чтобы убедиться, что он имеет правильное измерение.
Теперь, почему мы делаем это:
X - что-то вроде
>>>X[0]
<1x23 sparse matrix of type '<class 'numpy.int64'>'
with 5 stored elements in Compressed Sparse Row format>
, такмы преобразуем его, чтобы увидеть, что это на самом деле:
>>>X[0].toarray()
array([[0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,
0]], dtype=int64)
, а затем, как вы видите, возникает небольшая проблема с измерением, поэтому мы берем первый элемент.
возвращаясь к спискуничего не делает, это просто для вас, чтобы хорошо понять, что вы видите.(вы можете сбросить его для скорости)
ваш код теперь такой:
cv = CountVectorizer(binary = True)
cv.fit(df['data'].values)
X = df['data'].apply(lambda X : cv.transform([X])).values
X = list([list(x.toarray()[0]) for x in X])
clf = svm.SVC(kernel = 'linear', gamma = 0.001, C = 0.05)
clf.fit(X, target)