如何在Python中使用Sklearn做训练和测试分割

如何在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文件请点击这里。

# import packages
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
  
# importing data
df = pd.read_csv('headbrain1.csv')
  
# head of the data
print(df.head())
  
X= df['Head Size(cm^3)']
y=df['Brain Weight(grams)']
  
# using the train test split function
X_train, X_test,
y_train, y_test = train_test_split(X,y ,
                                   random_state=104, 
                                   test_size=0.25, 
                                   shuffle=True)
  
# printing out train and test sets
  
print('X_train : ')
print(X_train.head())
print('')
print('X_test : ')
print(X_test.head())
print('')
print('y_train : ')
print(y_train.head())
print('')
print('y_test : ')
print(y_test.head())

输出:

   Head Size(cm^3)  Brain Weight(grams)
0             4512                 1530
1             3738                 1297
2             4261                 1335
3             3777                 1282
4             4177                 1590
X_train : 
99     3478
52     4270
184    3479
139    3171
107    3399
Name: Head Size(cm^3), dtype: int64
(177,)

X_test : 
66     3415
113    3594
135    3436
227    4204
68     4430
Name: Head Size(cm^3), dtype: int64
(60,)

y_train : 
99     1270
52     1335
184    1160
139    1127
107    1226
Name: Brain Weight(grams), dtype: int64
(177,)

y_test : 
66     1310
113    1290
135    1235
227    1380
68     1510
Name: Brain Weight(grams), dtype: int64
(60,)

示例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也是如此。

# import packages
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
  
# importing data
df = pd.read_csv('headbrain1.csv')
print(df.shape)
  
# head of the data
print(df.head())
  
X= df['Head Size(cm^3)']
y=df['Brain Weight(grams)']
  
# using the train test split function
X_train, X_test, y_train, 
y_test = train_test_split(X,y , 
                          random_state=104,
                          train_size=0.8, shuffle=True)
  
# printing out train and test sets
print('X_train : ')
print(X_train.head())
print(X_train.shape)
print('')
print('X_test : ')
print(X_test.head())
print(X_test.shape)
print('')
print('y_train : ')
print(y_train.head())
print(y_train.shape)
print('')
print('y_test : ')
print(y_test.head())
print(y_test.shape)

输出:

(237, 2)
   Head Size(cm^3)  Brain Weight(grams)
0             4512                 1530
1             3738                 1297
2             4261                 1335
3             3777                 1282
4             4177                 1590
X_train : 
110    3695
164    3497
58     3935
199    3297
182    4005
Name: Head Size(cm^3), dtype: int64
(189,)

X_test : 
66     3415
113    3594
135    3436
227    4204
68     4430
Name: Head Size(cm^3), dtype: int64
(48,)

y_train : 
110    1310
164    1280
58     1330
199    1220
182    1280
Name: Brain Weight(grams), dtype: int64
(189,)

y_test : 
66     1310
113    1290
135    1235
227    1380
68     1510
Name: Brain Weight(grams), dtype: int64
(48,)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程