本守则是啥意思? (训练测试拆分 Scikit Learn)
Posted
技术标签:
【中文标题】本守则是啥意思? (训练测试拆分 Scikit Learn)【英文标题】:What does this Code mean? (Train Test Split Scikitlearn)本守则是什么意思? (训练测试拆分 Scikit Learn) 【发布时间】:2020-01-03 13:21:40 【问题描述】:无论我走到哪里,我都会看到这段代码。需要帮助理解这一点。
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X,y,testsize = 0.20)
X_train, X_test, y_train, y_test 在这种情况下是什么意思,我应该把 fit() 和 predict() 放进去
【问题讨论】:
【参考方案1】:简单来说,train_test_split
将您的数据集分为训练数据集和验证数据集。
验证集用于评估给定模型。
所以在这种情况下,验证数据集让我们了解模型性能。
X_train, X_test, y_train, y_test = train_test_split(X,y,testsize = 0.20)
上面一行将数据分成4部分
-
X_train - 训练数据集
y_train - 训练数据集的 o/p
X_test - 验证数据集
y_test - 验证数据集的 o/p
testsize = 0.2
表示您将拥有 20% 的验证数据和 80% 的训练数据
【讨论】:
【参考方案2】:`基本上这段代码将你的数据分成两部分。
-
用于训练
用于测试
在 test_size 变量的帮助下,您可以设置测试数据的大小
将数据分成两部分后,您必须使用 fit() 方法将训练数据拟合到模型中。 `
【讨论】:
【参考方案3】:正如文档所述,train_test_split
所做的是:Splits arrays or matrices into random train and test subsets
。你可以在这里找到它:https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html。我相信正确的关键字参数是test_size
,而不是testsize
,如果它是float,它是represents the proportion of the dataset to include in the test split
,如果它是一个int,它是the absolute number of test samples
。
X 和 y 是sequence of indexables with same length / shape[0]
,所以基本上是要拆分的数组/列表/矩阵/数据帧。
因此,总而言之,代码将 X 和 y 拆分为随机训练和测试子集(X_train 和 X_test 用于 X,y_train 和 y_test 用于 y)。每个测试子集应包含 20% 的原始数组条目作为测试样本。
您应该将_train
子集传递给fit()
,将_test
子集传递给predict()
。希望对你有帮助~
【讨论】:
所以“x_train”是训练标签和x_test训练目标?这应该使 y_train 测试标签和“y test”测试目标。这是正确的吗? 原始 X 和 y 各自包含什么?如果 X 包含观测值,y 是等效标签,则 X_train 是用于训练的观测值的子集,而 y_train 是它们对应的标签。 X_test 和 y_test 也是如此。 原始 X 包含特征,Y 包含标签(您要预测的) X = 训练标签示例(颜色、大小、味道)和 y = 训练目标示例(水果) 是的,正如我在修改后的评论中所说的那样:X_train 是用于训练的观察/特征的子集,而 y_train 是它们相应的标签。 X_test 和 y_test 也是如此。因此,为了训练您的模型,您使用 X_train 作为特征,使用 y_train 作为基本事实。同样,在测试时,您使用 X_test 作为特征,使用 y_test 来验证预测的标签。以上是关于本守则是啥意思? (训练测试拆分 Scikit Learn)的主要内容,如果未能解决你的问题,请参考以下文章
scikit learn 的训练测试拆分导致训练数据中只有一个唯一值的特征