python - 如何在机器学习中使用不同的数据集测试我的训练模型
问题描述
您好,我对 Python 和机器学习非常陌生,我遇到了一个问题。在拆分并完成我的训练和测试模型之后,现在我需要测试一个完全不同的数据集。
以下是我创建培训和测试的方式:
使用 NaiveBayes 分类器模型
nb_model = sklearn.naive_bayes.MultinomialNB()
nb_model.fit(X_train_v, y_train)
y_pred_class = nb_model.predict(X_test_v)
y_pred_probs = nb_model.predict_proba(X_test_v)
为了更改我正在使用的数据集,我需要调整什么,以便我可以将新数据集运行到训练模型中。
感谢您的时间和帮助!
解决方案
具体而言,从功能上讲,您的新数据集应该具有相同数量的特征。
如果x_train.shape
给出(752, 8)
,那么你知道它有 8 个特征和 752 个样本。
之后你的模型接受了训练,你可以确定它model.n_features
会给你8
.
您的模型现在能够预测具有 8 个特征的数据的输出:
import numpy as np
# 10 randomly generated samples with 8 features
new_dataset_1 = np.random.randint(0, 100, size=(10, 8))
new_pred_1 = model.predict(new_dataset_1)
# > array([47, 15, 2, 81, 99, 63, 53, 55, 24, 47])
new_pred_1.shape
# > (10, ) # One predicted class per sample
如果您尝试从具有任何其他特征计数的数据中进行预测,它将失败:
# 10 randomly generated samples with 9 features
new_dataset_2 = np.random.randint(0, 100, size=(10, 9))
new_pred_2 = model.predict(new_dataset_2)
# > ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0,
# with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 8 is different from 9)
在其他情况下,可能有办法获得相同数量的特征,但这完全取决于假设、数据类型或测试模型。
当然,这只是一个说明,对随机生成的数据进行预测没有任何意义。相反,您的新数据应该代表与训练数据相关的内容。
例如,您可以认为尝试使用您训练的德国火蚁繁殖率模型来预测奥地利火蚁的繁殖率是合理的。
推荐阅读
- generics - 密封类的通用对象
- php - 构建img src时文件名中的PHP空间
- javascript - 问jquery数组格式
- javascript - 使用时刻将时刻转换为格式(“H[h] m[m]”),但它显示的日期无效
- php - Laravel NeoEloquent 相当于 Inner Join
- php - 错误的结果 SoapVar
- java - 是否可以在 Android 中运行 H2O 模型?
- python - Flask 应用程序无法为请求创建 URL 适配器
- c# - 订阅多个 Observable 并在同一个线程上收到通知
- excel - 了解 Excel 中的复杂查找函数