Я создаю программу, которая назначает несколько меток / тегов текстовым описаниям. Я использую MultiOutputRegressor для маркировки своих текстовых описаний. Когда я предсказываю массив векторизованных текстов, в последней строке выскакивает следующая ошибка (y_pred = clf.predict (yTest)):
ValueError: фигуры (74,28) и (3532,2) не выровнены: 28 (тусклый 1)! = 3532 (тусклый 0)
Ниже мой код:
textList = df.Text
vectorizer2 = TfidfVectorizer(stop_words=stopWords)
vectorizer2.fit(textList)
x = vectorizer2.transform(textList)
tagList = df.Tags
vectorizer = MultiLabelBinarizer()
vectorizer.fit(tagList)
y = vectorizer.transform(tagList)
print("x.shape = " + str(x.shape))
print("y.shape = " + str(y.shape))
xTrain, xTest, yTrain, yTest = train_test_split(x, y, test_size=0.50)
nb_clf = MultinomialNB()
sgd = SGDClassifier()
lr = LogisticRegression()
mn = MultinomialNB()
xTrain = csr_matrix(xTrain).toarray()
xTest = csr_matrix(xTest).toarray()
yTrain = csr_matrix(yTrain).toarray()
print("xTrain.shape = " + str(xTrain.shape))
print("xTest.shape = " + str(xTest.shape))
print("yTrain.shape = " + str(yTrain.shape))
print("yTest.shape = " + str(yTest.shape))
for classifier in [nb_clf, sgd, lr, mn]:
clf = MultiOutputRegressor(classifier)
clf.fit(xTrain, yTrain)
y_pred = clf.predict(yTest)
Ниже приведены инструкции для печати фигур:
x.shape = (147, 3532)
y.shape = (147, 28)
xTrain.shape = (73, 3532)
xTest.shape = (74, 3532)
yTrain.shape = (73, 28)
yTest.shape = (74, 28)