【发布时间】:2015-03-16 04:40:40
【问题描述】:
我正在为一个项目学习 Scikit 机器学习,虽然我开始掌握一般过程,但细节仍然有点模糊。
之前我设法构建了一个分类器,对其进行训练并使用测试集对其进行测试。我用 cPickle 将它保存到磁盘。现在我想创建一个类来加载这个分类器并让用户用它来分类单个推文。
我认为这很简单,但我似乎从 X_new_tfidf = self.tfidf_transformer.fit_transform(fitTweetVec) 行得到 ValueError('dimension mismatch') 并带有以下代码:
class TweetClassifier:
classifier = None
vect = TfidfVectorizer()
tfidf_transformer = TfidfTransformer()
#open the classifier saved to disk to be utilized later
def openClassifier(self, name):
with open(name+'.pkl', 'rb') as fid:
return cPickle.load(fid)
def __init__(self, classifierName):
self.classifier = self.openClassifier(classifierName)
self.classifyTweet(np.array([u"Helvetin vittu miksi aina pitää sataa vettä???"]))
def classifyTweet(self, tweetText):
fitTweetVec = self.vect.fit_transform(tweetText)
print self.vect.get_feature_names()
X_new_tfidf = self.tfidf_transformer.fit_transform(fitTweetVec)
print self.classifier.predict(X_new_tfidf)
我在这里做错了什么?我在制作分类器并为其运行测试集时使用了类似的代码。我是否忘记了这里的一些重要步骤?
现在我承认我还没有完全理解这里的拟合和转换,因为我发现 Scikit 的教程对此有点模棱两可。如果有人尽可能清楚地解释它们,我完全支持链接:)
【问题讨论】:
标签: python machine-learning scikit-learn classification