Python 我在ML算法上应用了W2V。它给出了NB的负值误差,并给出了所有其他算法的0.48精度。怎么会?

Python 我在ML算法上应用了W2V。它给出了NB的负值误差,并给出了所有其他算法的0.48精度。怎么会?,python,logistic-regression,random-forest,word2vec,naivebayes,Python,Logistic Regression,Random Forest,Word2vec,Naivebayes,这是我写的代码。我将此文件应用于二进制分类的所有ML算法,但所有算法都给出相同的结果0.48。怎么可能呢?与BERT和TFIDF得分相比,这个结果也非常差。1000维的向量大小非常罕见,需要大量数据进行训练。例如,著名的《谷歌新闻》(GoogleNews)中有300万个单词,大约1000亿个语料库单词,但仍然只有300个维度。您的词干标记可能不足以证明100维向量的合理性,更不用说300或1000维向量了 选择min\u count=1是个坏主意。这种算法无法从只出现几次的单词中学习到任何有价值

这是我写的代码。我将此文件应用于二进制分类的所有ML算法,但所有算法都给出相同的结果0.48。怎么可能呢?与BERT和TFIDF得分相比,这个结果也非常差。

1000维的向量
大小
非常罕见,需要大量数据进行训练。例如,著名的《谷歌新闻》(GoogleNews)中有300万个单词,大约1000亿个语料库单词,但仍然只有300个维度。您的
词干标记可能不足以证明100维向量的合理性,更不用说300或1000维向量了

选择
min\u count=1
是个坏主意。这种算法无法从只出现几次的单词中学习到任何有价值的东西。通常情况下,人们会通过完全丢弃稀有词来获得更好的结果,默认的
minu count=5
就可以了。(如果有大量数据,可能会增加此值以丢弃更多的单词。)

您是否在检查模型的大小或逐字逐句的结果,以确保它符合您的预期?尽管您的column被命名为
STEMMED_TOKENS
,但我看不到任何实际拆分为token的情况,
Word2Vec
类希望每个文本都是字符串列表,而不是字符串

最后,在没有看到将单词向量丰富的数据提供给其他分类步骤的所有其他选择的情况下,可能(甚至可能)还有其他错误

假设一个二元分类模型通过简单地使用更常见的类别对每个示例进行分类,总是可以获得至少50%的准确率,任何低于50%的准确率结果都会立即引起对流程中主要问题的怀疑,如:

  • 示例和标签未对齐
  • 培训数据不足/不具代表性
  • 由于数据准备或调用错误,某些步骤根本没有运行
from gensim.models import Word2Vec
import time
# Skip-gram model (sg = 1)
size = 1000
window = 3
min_count = 1
workers = 3
sg = 1

word2vec_model_file = 'word2vec_' + str(size) + '.model'
start_time = time.time()
stemmed_tokens = pd.Series(df['STEMMED_TOKENS']).values
# Train the Word2Vec Model
w2v_model = Word2Vec(stemmed_tokens, min_count = min_count, size = size, workers = workers, window = window, sg = sg)
print("Time taken to train word2vec model: " + str(time.time() - start_time))
w2v_model.save(word2vec_model_file)