AttributeError: dense not found
AttributeError: dense not found
任务:使用 CountVectorizer
和 TfidfTransformer
使用 SVC
进行文档分类。
我已经训练并测试了模型,并使用 pickle
.
将模型与 CountVectorizer 和 TfidfTransformer 一起保存
现在,当我加载并使用它进行预测时,它给出 AttributeError: dense not found
。
我检查了训练和测试阶段的输入形状。一样的。但我认为形状不是问题。
在训练和通过加载使用它之间没有进行任何版本更新。一切都在同一版本 scikit-learn==0.23.2
.
这是我的代码:
#Training
X_train = train["Text"]
Y_train = train["Class"]
count = CountVectorizer(lowercase=False)
X_count_vector = count.fit_transform(X_train)
tfidf = TfidfTransformer(smooth_idf=True, use_idf=True)
X_train = tfidf.fit_transform(X_count_vector)
classifier = SVC()
classifier.fit(X_train.todense(), Y_train) #Training as dense matrix
#Testing
cvec = count.transform(test["Text"])
predable = tfidf.transform(cvec)
pred = classifier.predict(predable.todense()) #This line works, it gived the predicted values as expected.
#Saving the model
pickle.dump(classifier, open("classifier.txt", 'wb'))
pickle.dump(count, open("countVec.txt", 'wb'))
pickle.dump(tfidf, open("tfidf.txt", 'wb'))
#Loading the model
classifiernew = pickle.load(open("classifier.txt", 'rb'))
countVectornew = pickle.load(open("countVec.txt", 'rb'))
tfidfnew = pickle.load(open("tfidf.txt", 'rb'))
#Using the Loaded Model
newInp = test["Text"]
countVec = countVectornew.transform(newInp)
X_test = tfidfnew.transform(countVec)
#Prediction, this is where the Error enters in
predd = classifiernew.predict(X_test.todense()) #The error causing line
这是完整的回溯:
res = clf.predict(testable.dense())
Traceback (most recent call last):
File "<ipython-input-74-d4714966beb3>", line 1, in <module>
res = clf.predict(testable.dense())
File "...\env\lib\site-packages\scipy\sparse\base.py", line 687, in __getattr__
raise AttributeError(attr + " not found")
AttributeError: dense not found
好吧,在重新提出这个问题之后,我可以post 解决这个问题。
由于某种原因 .dense()
方法不起作用,我使用 .toarray()
代替它,它对我来说非常有效。
快乐建模。
任务:使用 CountVectorizer
和 TfidfTransformer
使用 SVC
进行文档分类。
我已经训练并测试了模型,并使用 pickle
.
现在,当我加载并使用它进行预测时,它给出 AttributeError: dense not found
。
我检查了训练和测试阶段的输入形状。一样的。但我认为形状不是问题。
在训练和通过加载使用它之间没有进行任何版本更新。一切都在同一版本 scikit-learn==0.23.2
.
这是我的代码:
#Training
X_train = train["Text"]
Y_train = train["Class"]
count = CountVectorizer(lowercase=False)
X_count_vector = count.fit_transform(X_train)
tfidf = TfidfTransformer(smooth_idf=True, use_idf=True)
X_train = tfidf.fit_transform(X_count_vector)
classifier = SVC()
classifier.fit(X_train.todense(), Y_train) #Training as dense matrix
#Testing
cvec = count.transform(test["Text"])
predable = tfidf.transform(cvec)
pred = classifier.predict(predable.todense()) #This line works, it gived the predicted values as expected.
#Saving the model
pickle.dump(classifier, open("classifier.txt", 'wb'))
pickle.dump(count, open("countVec.txt", 'wb'))
pickle.dump(tfidf, open("tfidf.txt", 'wb'))
#Loading the model
classifiernew = pickle.load(open("classifier.txt", 'rb'))
countVectornew = pickle.load(open("countVec.txt", 'rb'))
tfidfnew = pickle.load(open("tfidf.txt", 'rb'))
#Using the Loaded Model
newInp = test["Text"]
countVec = countVectornew.transform(newInp)
X_test = tfidfnew.transform(countVec)
#Prediction, this is where the Error enters in
predd = classifiernew.predict(X_test.todense()) #The error causing line
这是完整的回溯:
res = clf.predict(testable.dense())
Traceback (most recent call last):
File "<ipython-input-74-d4714966beb3>", line 1, in <module>
res = clf.predict(testable.dense())
File "...\env\lib\site-packages\scipy\sparse\base.py", line 687, in __getattr__
raise AttributeError(attr + " not found")
AttributeError: dense not found
好吧,在重新提出这个问题之后,我可以post 解决这个问题。
由于某种原因 .dense()
方法不起作用,我使用 .toarray()
代替它,它对我来说非常有效。
快乐建模。