在机器学习中,拿到一堆训练数据,一般会我们需要先将数据打乱,使数据随机排序,然后在进行切分,需要将数据切分成训练集、交叉验证集和测试集,在监督学习中还要切分出属性集和标签集。
第一个实现方法:
最简单的方法就是采用pandas中自带的 sample这个方法。
假设df是这个DataFrame
df.sample(frac=1)
这样对可以对df进行shuffle。其中参数frac是要返回的比例,比如df中有10行数据,我只想返回其中的30%,那么frac=0.3。
有时候,我们可能需要打混后数据集的index(索引)还是按照正常的排序。我们只需要这样操作
df.sample(frac=1).reset_index(drop=True)
切割数据
train=df.iloc[:a]#取数据的前a行为训练集
x_train=train.iloc[:,:b]#取训练集的前b列为属性集
y_train=train.iloc[:,b:]#取训练集的最后一列标签集
第二个实现方法:
sklearn(机器学习的库)中也有shuffle的方法。
from sklearn.utils import shuffle
df = shuffle(df)
第三个实现方法:
numpy库中也有进行shuffle的方法
df.iloc[np.random.permutation(len(df))]