【问题标题】:How to determine which one is training and testing in scikit-learn MLPRegressor?如何确定在 scikit-learn MLPRegressor 中哪个是训练和测试?
【发布时间】:2018-01-30 13:01:27
【问题描述】:

我有两个数据集(训练和测试),它们都有完全相同的特征列和标签,只是内部不同(数字和值)。这是我的代码:

import pandas as pd
import numpy as np 

from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPRegressor

datatraining = pd.read_csv("datatrain.csv")

datatesting = pd.read_csv("datatest.csv")

columns = ["Full","Id","Id & PPDB","Id & Words Sequence","Id & Synonyms","Id & Hypernyms","Id & Hyponyms"]

labeltrain = datatraining["Gold Standard"].values
featurestrain = datatraining[list(columns)].values


labeltest = datatesting["Gold Standard"].values
featurestest = datatesting[list(columns)].values

X_train = featurestrain
y_train = labeltrain

X_test = featurestest
y_test = labeltest

mlp = MLPRegressor(solver='lbfgs', hidden_layer_sizes=50, max_iter=1000, learning_rate='constant')

mlp.fit(X_train, y_train)

print('Accuracy training : {:.3f}'.format(mlp.score(X_train, y_train)))
print

mlp.fit(X_test, y_test)

print('Accuracy testing : {:.3f}'.format(mlp.score(X_test, y_test)))
print

我仍然怀疑我的代码是否正确地找到了训练和测试分数,因为我看不到区分哪个是训练,哪个是测试。我看到两者都在训练,或者都在测试。 任何人都可以解释如何确定它?还是我的代码已经正确?谢谢

【问题讨论】:

  • 这通常是通过将您的数据分成两组数据点来完成的,这些数据点是随机选择的,无需替换。可以是 50/50,或者引导为 80/20 的五种不同组合。

标签: python machine-learning scikit-learn regression


【解决方案1】:

一旦将模型拟合到训练中,就不应再将其拟合到测试中。相反,您应该使用测试集评估模型的性能。因此,您需要删除该行

mlp.fit(X_test, y_test)

来自您的代码。然后使用行

print('Accuracy testing : {:.3f}'.format(mlp.score(X_test, y_test)))

您将能够评估模型在未知数据上的性能。

【讨论】:

  • 我删除了该行,但它显示了负面的测试分数,并且每次运行时它总是改变
  • 分数是负数,因为它是 R^2 分数,这确实可能是负数(见这里:scikit-learn.org/stable/modules/generated/…)。每次得分都不一样,因为过程中存在随机性。尝试在代码顶部添加行 np.random.seed(1),以使结果一致。
  • 对不起,我仍然不明白np.random.seed(1) 的用法,因为我是使用scikit 和numpy 的新手。我可以再举一个例子吗?谢谢
  • 当你拟合 MLPRegressor 时,过程中存在随机性。例如,数据是随机打乱的。因此,每次运行代码时,您可能会得到不同的结果。通过将固定种子设置为随机状态(参见此处:docs.scipy.org/doc/numpy/reference/generated/…),您可以确保每次随机过程都以相同的方式运行。例如,每次运行代码时,shuffle 都是相同的,依此类推。也可以看看这个:docs.scipy.org/doc/numpy/reference/generated/…
猜你喜欢
  • 2021-06-20
  • 2015-06-08
  • 2020-06-17
  • 2019-09-11
  • 2019-04-10
  • 2017-04-16
  • 2018-12-07
  • 2017-04-11
  • 2018-01-31
相关资源
最近更新 更多