gpt4 book ai didi

python - 对新文档进行分类 - 随机森林、词袋

转载 作者:行者123 更新时间:2023-11-30 22:43:58 25 4
gpt4 key购买 nike

这是我第一次尝试使用 ML 和 Python 进行文档分类。

  1. 我首先查询数据库,提取 5000 篇与洗钱相关的文章,并将其转换为 pandas df
  2. 然后我提取了 500 篇与洗钱无关的文章,并将它们转换为 pandas df
  3. 我将两个 dfs 连接起来,并将它们标记为“洗钱”或“其他”
  4. 我进行预处理(删除标点符号、停用词、小写字母等)
  5. 然后根据词袋原理向模型提供数据,如下所示:

    vectorizer = CountVectorizer(analyzer = "word",   
    tokenizer = None,
    preprocessor = None,
    stop_words = None,
    max_features = 5000)

    text_features = vectorizer.fit_transform(full_df["processed full text"])
    text_features = text_features.toarray()
    labels = np.array(full_df['category'])
    X_train, X_test, y_train, y_test = train_test_split(text_features, labels, test_size=0.33)
    forest = RandomForestClassifier(n_estimators = 100)
    forest = forest.fit(X_train, y_train)
    y_pred = forest.predict(X_test)
    accuracy_score(y_pred=y_pred, y_true=y_test)

到目前为止它运行良好(尽管给我的准确率太高了 99%)。但我现在想在一个全新的文本文档上测试它。如果我对其进行矢量化并执行forest.predict(test),它显然会说:

ValueError: Number of features of the model must  match the input. Model n_features is 5000 and  input n_features is 45 

我不知道如何克服这个问题以便能够对全新的文章进行分类。

最佳答案

首先,尽管我的建议可能有效,但我强烈强调这个解决方案具有一些统计和计算结果,您在运行此代码之前需要了解这些结果。假设您有一个初始文本语料库 full_df["processed full text"] ,并且 test 是您想要测试的新文本。然后,使用 full_dftest 定义 full_added 文本语料库。

text_features = vectorizer.fit_transform(full_added)    
text_features = text_features.toarray()

您可以使用 full_df 作为训练集(X_train = full_df["processed full text"]y_train = np.array(full_df['category ']))。然后你就可以运行

forest = RandomForestClassifier(n_estimators = 100)     
forest = forest.fit(X_train, y_train)
y_pred = forest.predict(test)

当然,在此解决方案中,您已经定义了参数,并且您认为您的模型对新数据具有鲁棒性。

另一件事是,如果您有一个新文本流作为您想要分析的输入,则此解决方案将非常糟糕,因为计算新的 vectorizer.fit_transform(full_added)会急剧增加。

希望对您有帮助。

关于python - 对新文档进行分类 - 随机森林、词袋,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41633828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com