一,pandas.DataFrame.sample 随机选取若干行
1 数据切片选取
1.1 pandas.DataFrame.sample 随机选取若干行
1.1.1 功能说明
有时候我们只需要数据集中的一部分,并不需要全部的数据。这个时候我们就要对数据集进行随机的抽样。pandas中自带有抽样的方法。
功能相似:numpy.random.choice
Generates a random sample from a given 1-D numpy array.
1.1.2 使用说明
1 函数名及功能
2.
DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)[source]
n是要抽取的行数。(例如n=20000时,抽取其中的2W行)
frac是抽取的比列。(有一些时候,我们并对具体抽取的行数不关系,我们想抽取其中的百分比,这个时候就可以选择使用frac,例如frac=0.8,就是抽取其中80%)
replace:是否为有放回抽样,取replace=True时为有放回抽样。
weights这个是每个样本的权重,具体可以看官方文档说明。
random_state这个在之前的文章已经介绍过了。
axis是选择抽取数据的行还是列。axis=0的时是抽取行,axis=1时是抽取列(也就是说axis=1时,在列中随机抽取n列,在axis=0时,在行中随机抽取n行)
参数说明见链接:https://blog.csdn.net/zhengxu25689/article/details/87347700
- 返回值说明
返回选择的N行元素的DataFrame对象。
二,在机器学习中,拿到一堆训练数据,一般会我们需要先将数据打乱,使数据随机排序,然后在进行切分,需要将数据切分成训练集、交叉验证集和测试集,在监督学习中还要切分出属性集和标签集。
(注:df代表一个DataFrame)
1.打乱数据
df=df.sample(frac=1.0)#打乱所有数据
其中参数frac是要返回的比例,比如df中有10行数据,我只想返回其中的30%,那么frac=0.3。
df=df.reset_index(drop=True)#打乱后的数据index也是乱的,用reset_index重新加一列index,drop=True表示丢弃原有index一列
2.切割数据
train=df.iloc[:a]#取数据的前a行为训练集
x_train=train.iloc[:,:b]#取训练集的前b列为属性集
y_train=train.iloc[:,b:]#取训练集的最后一列标签集
原文链接:https://blog.csdn.net/qq_24367797/article/details/86676160
三,其实,sklearn(机器学习的库)中也有shuffle的方法。
from sklearn.utils import shuffle
df = shuffle(df)
另外,numpy库中也有进行shuffle的方法(不建议)
df.iloc[np.random.permutation(len(df))]
原文链接:https://blog.csdn.net/qq_22238533/article/details/70917102
版权声明:本文为weixin_43668299原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。