Saya menggunakan sk-learn dengan python untuk menyesuaikan model dan mengubah input_data melalui model.
Saya menggunakan FeatureUnion untuk menggabungkan CountVectorizer dan TfidfEmbeddingVectorizer.
Boleh saja menggunakan CountVectorizer atau TfidfEmbeddingVectorizer saja, tetapi jika saya menggabungkan dua fitur dengan Feature Union, ada kesalahan seperti ini:
TypeError: fit() takes 2 positional arguments but 3 were given
Kelas TfidfEmbeddingVectorizer seperti ini:
class TfidfEmbeddingVectorizer(object):
...
def fit(self, X):
tfidf = TfidfVectorizer(analyzer=lambda x: x)
tfidf.fit(X)
# if a word was never seen - it must be at least as infrequent
# as any of the known words - so the default idf is the max of
# known idf's
max_idf = max(tfidf.idf_)
self.word2weight = defaultdict(
lambda: max_idf,
[(w, tfidf.idf_[i]) for w, i in tfidf.vocabulary_.items()])
return self
Dan saya menggunakan FeatureUnion seperti ini:
model = gensim.models.Word2Vec(speech.train_data, size = 100)
w2v = dict(zip(model.wv.index2word, model.wv.syn0))
count = CountVectorizer(tokenizer=lambda doc: doc, lowercase=False)
w2v_tfidf = TfidfEmbeddingVectorizer(w2v)
feature_union = FeatureUnion([('ngram', count),
('tfidf', w2v_tfidf)])
feature_union.fit(speech.train_data)
Saya telah melihat solusi yang menurunkan versi sk-learn menjadi 0.18.0 membuatnya baik-baik saja, Tapi saya tidak dapat menurunkan versi sk-learn dengan kesalahan ini:
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://andinghub.visualstudio.com/visual-cpp-build-tools
Apakah ada solusi lain untuk menggunakan fungsi fit FeatureUnion?