为什么在TfidfVectorizer之后X有24个特征,但PassiveAggressiveClassifier期望1



我试图在数组上使用TfidfVectorizer与一个例子,并将其用于模型预测,但在TfidfVectorizer之后,我得到:

<1x24 sparse matrix of type '<class 'numpy.float64'>'
with 24 stored elements in Compressed Sparse Row format>

而不是:2x113905像我的x_test或x_train,这就是我所做的:

labels=df.Label #clasify labels
x_train,x_test,y_train,y_test=train_test_split(df['Text'], labels, test_size=0.2, random_state=7) #split a data
print(len(x_train),"tt",len(x_test),"tt",len(y_train),"tt",len(y_test))
my_stopwords_list = stopwords.words('ukrainian')
test = ['Жінка пропагувала "руській мір" на весь вагон: скандал в електричці на Київщині. Інцидент стався в у приміській електричці сполученням "Святошин" - "Тетерів" у понеділок ввечері. Небайдужі пасажири рішуче відреагували й "висадили" жінку на найближчій станції.']
test = pd.Series(test,name="Text")
#DataFlair - Initialize a TfidfVectorizer
tfidf_vectorizer=TfidfVectorizer(stop_words=my_stopwords_list,smooth_idf=False)
#DataFlair - Fit and transform train set, transform test set
tfidf_train=tfidf_vectorizer.fit_transform(x_train.values.astype('U')) 
tfidf_test=tfidf_vectorizer.transform(x_test.values.astype('U'))
tfidf_train1=tfidf_vectorizer.fit_transform(test.values.astype('U'))

但是当我查看tfidf_test和tfidf_train1时,我得到:

(https://i.stack.imgur.com/Xrzbf.png)

不能使用model.predict():

pred = model_PassiveAggressiveClassifier.predict(tfidf_train1)
***ValueError**: X has 24 features, but PassiveAggressiveClassifier is expecting 113905 features as input.*

我在这个kaggle工作中尝试了同样的方法,但它不起作用,我只有一个线索:我使用乌克兰文本,但我不认为它有很大的影响

我找到了解决这个堆栈问题的方法,我创建了新的词汇和新的"测试示例"。只有几个这样的字符:

所以我返回了这个内核:

#DataFlair - Initialize a TfidfVectorizer
tfidf_vectorizer=TfidfVectorizer(stop_words=my_stopwords_list,smooth_idf=False)
#DataFlair - Fit and transform train set, transform test set
tfidf_train=tfidf_vectorizer.fit_transform(x_train.values.astype('U')) 
tfidf_test=tfidf_vectorizer.transform(x_test.values.astype('U'))
tfidf_train1=tfidf_vectorizer.transform(test)

之后我的"test example"是这样的:

<1x113905 sparse matrix of type '<class 'numpy.float64'>'
with 6 stored elements in Compressed Sparse Row format>

最新更新