machine-learning - 您如何使用 sklearn 模型对新观察结果进行预测?
问题描述
所以,这感觉像是一个愚蠢的问题,但我无法弄清楚如何实际使用我创建的基于文本的机器学习预测器。
我使用多个 YouTube 视频来复习监督机器学习,以根据文本进行预测。大多数视频都使用经典的火腿或垃圾邮件预测器来过滤垃圾邮件或短信,我按照视频试图教给我的内容编写代码,似乎成功了。
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”之类的文字,看看我创建的预测器是否可以预测这些是 Ham (0 ) 或垃圾邮件 (1)。
解决方案
您所要做的就是将新数据传递给predict
模型的函数,同时应用您在训练期间使用的所有转换。
在这种情况下:
lr.predict(cvec.transform(X_new))
其中X_new
包含新的观察结果。
推荐阅读
- laravel - 拉拉维尔 | Bootstrap 5 丸 - 课堂活动/表演
- css - 如何在角度chartjs中禁用垂直滚动条
- r - 如何在 Rstudio 中快速插入新的“管道运算符”?
- swift - 自定义 UIDate 选择器
- spring-boot - 对于任何运行时错误,如何停止 IBM MQ 的重试操作?
- entity-framework-core - Entity Framework 删除数据库中的数据集,而不是删除实体之间的链接
- javascript - TypeError:使用 Draft.js 编辑器时 editorState.getCurrentContent 不是函数
- ios - 如何清除 OAuthSwift 库中的 cookie(OAuth2.0)
- sql - SQL Server 搜索查询在选择条件中添加顶部后仅读取有限的行
- api - 如何在邮递员中传递包含斜杠字符的字符串参数?