【问题标题】:How do you make prediction for new observations with sklearn model?您如何使用 sklearn 模型预测新的观察结果?
【发布时间】:2020-05-23 22:03:50
【问题描述】:

所以,这感觉像是一个愚蠢的问题,但我不知道如何实际使用我创建的基于文本的机器学习预测器。

我使用多个 YouTube 视频来复习监督机器学习,以根据文本进行预测。大多数视频都使用经典的 Ham 或 Spam 预测器来过滤垃圾邮件或短信,我按照视频试图教给我的内容编写代码,似乎成功了。

X_train, X_test, y_train, y_test = train_test_split(X,
                                                    y,
                                                    test_size=0.2,
                                                    random_state=37)

cvec = CountVectorizer(stop_words='english')

X_train_cvec = cvec.fit_transform(X_train)
X_test_cvec = cvec.transform(X_test)
lr = LogisticRegression()
lr.fit(X_train_cvec, y_train)

print(f'Training Score for CountVectorizer: {lr.score(X_train_cvec, y_train)}')
print(f'Testing Score for CountVectorizer: {lr.score(X_test_cvec, y_test)}')

Training Score for CountVectorizer: 0.9961857751851021
Testing Score for CountVectorizer: 0.9865470852017937

但是在视频结束后,我意识到我不知道如何实际实现这一点。在这些视频中,他们都没有真正向我展示如何在我事先不知道答案是什么的数据上测试这个,而我这辈子都无法弄清楚。

为了澄清我的意思,我希望能够输入诸如“你做得如何”和“恭喜你刚刚被选为 blah blah blah”之类的文本,并查看我创建的预测器是否可以预测这些是火腿 (0) 或垃圾邮件 (1)。

【问题讨论】:

    标签: machine-learning logistic-regression spam-prevention supervised-learning countvectorizer


    【解决方案1】:

    您所要做的就是将新数据传递给模型的predict 函数,同时应用您在训练期间使用的所有转换。

    在这种情况下:

    lr.predict(cvec.transform(X_new))
    

    X_new 包含新的观察结果。

    【讨论】:

    • 正如我预期的那样简单得令人恼火。谢谢。
    猜你喜欢
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 2015-12-10
    • 2020-09-19
    • 2015-08-22
    • 1970-01-01
    • 2017-08-10
    相关资源
    最近更新 更多