如何在Python中使用Sklearn做训练和测试分割
在这篇文章中,让我们学习如何在Python中使用Sklearn做训练测试分割。
用Sklearn做训练和测试
train_test_split()方法被用来将我们的数据分成训练集和测试集。
首先,我们需要将我们的数据分为特征(X)和标签(Y)。数据帧被分为X_train,X_test , y_train和y_test。X_train和y_train集被用于训练和拟合模型。X_test和y_test集用于测试模型是否预测了正确的输出/标签。我们可以明确地测试训练集和测试集的大小。建议保持我们的训练集比测试集大。
训练集: 训练数据集是一组被用来拟合模型的数据。训练模型的数据集。这些数据被模型看到并学习。
测试集: 测试数据集是训练数据集的一个子集,利用它来对最终的模型拟合进行准确评估。
验证集: 验证数据集是来自你的模型训练集的数据样本,用于估计模型性能,同时调整模型的超参数。
默认情况下,我们25%的数据是测试集,75%的数据进入训练测试。
语法: sklearn.model_selection.train_test_split()
参数:
- arrays:可索引数据的序列。 列表、numpy数组、scipy稀疏矩阵和pandas数据帧都是有效输入。
- test_size:int 或 float,默认为 None。 如果是float,它应该在0.0和1.0之间,代表要测试分割的数据集的百分比。如果使用int,它指的是测试样本的总数。如果该值为None,则使用训练规模的补码。如果训练规模也是无,它将被设置为0.25。
- train_size:int或float,默认为None。
- random_state : int,默认为None。 控制在执行分割之前如何洗刷数据。如果要在多个函数调用中重复输出,请传递一个int。
shuffle: boolean对象,默认为True。 在拆分前是否要对数据进行洗牌。如果shuffle=False,Stratify必须为None。
- stratify:数组类对象,默认为None。 如果选择None,则使用这些作为类标签对数据进行分层。
返回值: splitting: list
示例1:
numpy、pandas和scikit-learn包被导入。CSV文件被导入。X包含特征,Y是标签。我们将数据帧分割成X和Y,并对它们进行训练测试分割。Random_state的作用类似于numpy的种子,它用于数据的可重复性。test_size被给定为0.25,这意味着我们25%的数据会进入测试尺寸。1-test_size是我们的训练大小,我们不需要指定它。 shuffle =True,在溢出之前对我们的数据进行洗牌。X_train和X_test集被用来拟合和训练我们的模型,测试集被用来测试和验证。
要访问CSV文件请点击这里。
输出:
示例2:
在这个例子中,遵循同样的步骤,而不是指定test_size,而是指定train_size。test_size是1-train_size。80%的数据是训练集,所以20%的数据是我们的测试集。如果我们不指定测试集和训练集的大小,默认test_size为0.25。X_train和y_train有相同的形状和索引,因为y_train是X_train特征的标签,X_test和y_test也是如此。
输出: