如何通过 Python 机器学习模型 运行 测试数据?
How do I run test data through my Python Machine Learning Model?
所以我终于在 Python 完成了我的第一个机器学习模型。最初我拿一个数据集并像这样分割它:
# Split-out validation dataset
array = dataset.values
X = array[:,2:242]
Y = array[:,1]
validation_size = 0.20
seed = 7
X_train, X_validation, Y_train, Y_validation = model_selection.train_test_split(X, Y, test_size=validation_size, random_state=seed)
所以你可以看到我将使用 20% 的数据来验证。但是一旦建立了模型,我想 validate/test 使用它以前从未接触过的数据。我是否只是制作相同的 X、Y 数组并使 validation_size = 1?我一直在研究如何在不重新训练的情况下对其进行测试。
models = []
models.append(('LR', LogisticRegression()))
models.append(('LDA', LinearDiscriminantAnalysis()))
models.append(('KNN', KNeighborsClassifier()))
models.append(('CART', DecisionTreeClassifier()))
models.append(('NB', GaussianNB()))
#models.append(('SVM', SVC()))
# evaluate each model in turn
results = []
names = []
for name, model in models:
kfold = model_selection.KFold(n_splits=12, random_state=seed)
cv_results = model_selection.cross_val_score(model, X_train, Y_train, cv=kfold, scoring=scoring)
results.append(cv_results)
names.append(name)
msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())
print(msg)
lr = LogisticRegression()
lr.fit(X_train, Y_train)
predictions = lr.predict(X_validation)
print(accuracy_score(Y_validation, predictions))
print(confusion_matrix(Y_validation, predictions))
print(classification_report(Y_validation, predictions))
我可以通过模型 运行 数据和 return 预测,但我如何在 'new' 历史数据上测试它?
我可以做这样的事情来预测:
lr.predict([[5.7,...,2.5]])
但不确定如何通过测试数据集并获得 confusion_matrix / classification_report。
But once the model is built, I would like to validate/test it with data that it has never touched before.
您使用拆分数据进行训练和测试(验证)的原因是 运行 数据模型,该数据未参与训练集。
所以你的模型不应该使用你的测试集来学习,也不要碰它。
有时候,如果你想与另一个测试集进行比较,你可以提取两个测试集(用同样的方法),例如(50%, 25%, 25%),或(70%, 15% , 15%) 等,取决于您的数据分布。
I can run data through the model, and return a prediction, but how do I test this on 'new' historical data?
您使用预测方法。但是当你有 "new" 数据时,你没有验证数据集,因为你不知道新数据的验证数据集。
这就是机器学习与概率、准确度和其他指标一起工作的原因,这可以向您展示它在 "new" 数据上的效果如何。
[question]: I can run data through the model, and return a prediction, but how do I test this on 'new' historical data?
如果你在下面查看我的项目,你可以看到我是如何训练和测试我的数据的。我个人永远不会测试我所有的数据。
https://github.com/wendysegura/Portland_Forecasting/blob/master/CSV_Police_Files/Random%20Forest%202012-2016.ipynb
sklearn 模型的一般形式 classes 和方法。
- 模型=base_models.AnySKLearnObject()
- 创建估算器实例class
- model.fit(train_X, train_y)
- 训练你的模型;也称为“拟合数据”
- model.score(train_X, train_y)
- 使用默认评分方法使用训练数据对您的模型进行评分(建议将来使用指标模块)
- model.predict(test_X)
- 预测你的测试数据
- model.score(test_X, test_y)
- 使用您的测试数据对您的模型进行评分
- model.predict(new_X)
- 对一组新数据进行预测
所以我终于在 Python 完成了我的第一个机器学习模型。最初我拿一个数据集并像这样分割它:
# Split-out validation dataset
array = dataset.values
X = array[:,2:242]
Y = array[:,1]
validation_size = 0.20
seed = 7
X_train, X_validation, Y_train, Y_validation = model_selection.train_test_split(X, Y, test_size=validation_size, random_state=seed)
所以你可以看到我将使用 20% 的数据来验证。但是一旦建立了模型,我想 validate/test 使用它以前从未接触过的数据。我是否只是制作相同的 X、Y 数组并使 validation_size = 1?我一直在研究如何在不重新训练的情况下对其进行测试。
models = []
models.append(('LR', LogisticRegression()))
models.append(('LDA', LinearDiscriminantAnalysis()))
models.append(('KNN', KNeighborsClassifier()))
models.append(('CART', DecisionTreeClassifier()))
models.append(('NB', GaussianNB()))
#models.append(('SVM', SVC()))
# evaluate each model in turn
results = []
names = []
for name, model in models:
kfold = model_selection.KFold(n_splits=12, random_state=seed)
cv_results = model_selection.cross_val_score(model, X_train, Y_train, cv=kfold, scoring=scoring)
results.append(cv_results)
names.append(name)
msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())
print(msg)
lr = LogisticRegression()
lr.fit(X_train, Y_train)
predictions = lr.predict(X_validation)
print(accuracy_score(Y_validation, predictions))
print(confusion_matrix(Y_validation, predictions))
print(classification_report(Y_validation, predictions))
我可以通过模型 运行 数据和 return 预测,但我如何在 'new' 历史数据上测试它?
我可以做这样的事情来预测: lr.predict([[5.7,...,2.5]])
但不确定如何通过测试数据集并获得 confusion_matrix / classification_report。
But once the model is built, I would like to validate/test it with data that it has never touched before.
您使用拆分数据进行训练和测试(验证)的原因是 运行 数据模型,该数据未参与训练集。 所以你的模型不应该使用你的测试集来学习,也不要碰它。
有时候,如果你想与另一个测试集进行比较,你可以提取两个测试集(用同样的方法),例如(50%, 25%, 25%),或(70%, 15% , 15%) 等,取决于您的数据分布。
I can run data through the model, and return a prediction, but how do I test this on 'new' historical data?
您使用预测方法。但是当你有 "new" 数据时,你没有验证数据集,因为你不知道新数据的验证数据集。 这就是机器学习与概率、准确度和其他指标一起工作的原因,这可以向您展示它在 "new" 数据上的效果如何。
[question]: I can run data through the model, and return a prediction, but how do I test this on 'new' historical data?
如果你在下面查看我的项目,你可以看到我是如何训练和测试我的数据的。我个人永远不会测试我所有的数据。 https://github.com/wendysegura/Portland_Forecasting/blob/master/CSV_Police_Files/Random%20Forest%202012-2016.ipynb
sklearn 模型的一般形式 classes 和方法。
- 模型=base_models.AnySKLearnObject()
- 创建估算器实例class
- model.fit(train_X, train_y)
- 训练你的模型;也称为“拟合数据”
- model.score(train_X, train_y)
- 使用默认评分方法使用训练数据对您的模型进行评分(建议将来使用指标模块)
- model.predict(test_X)
- 预测你的测试数据
- model.score(test_X, test_y)
- 使用您的测试数据对您的模型进行评分
- model.predict(new_X)
- 对一组新数据进行预测