1、 数据预处理
随机化操作
机器学习中的常用随机化操作中可以使用random包做不重复随机数生成,以此生成的随机数作为数据集下标去截取相应数据集。下面这句简单有效的代码可以帮助实现基本所有的随机化预处理操作。
import random
samp_ids = [i for i in sorted(random.sample(range(nItem), nSample)) ]
# nSample为需要取得样本数
数据随机抽样:
import random
nItem = len(df)
nSample = 1000
samp_ids = [i for i in sorted(random.sample(range(nItem), nSample)) ]
# nSample为需要取得样本数
samp_idList = df.id.isin(samp_ids)
df_sample = df[samp_idList]
数据集切分为训练集与测试集:
import random
nRatio = 2
nTest = int(nSample / nRatio)
nTrain = nSample - nTest
samp_ix = [rowId[i] for i in sorted(random.sample(range(nSample), nTest)) ]
# 随机产生要截取的下标
list_testSamp = df.row_id.isin(samp_ix)
list_trainSamp = list_testSamp.apply(lambda x: not x)
# 获得截取列表
samp_test = df[list_testSamp]
samp_train = df[list_trainSamp]
随机化数据集样本位序:
- 推荐:一句输出下标:
sorted(random.sample(range(nSample), nSample))
再根据随机下标的顺序去遍历以此数据集- 使用sklearn包的内置操作:其机器学习算法的train方法都有一个random_state参数用于设置数据随机初始化的
- 但如果不用上面的方法实现,可以使用如下的方法思路: 为每个样本设置两个值a、b:前者为随机值,后者为下标值
- 以随机值a作为排序标准对每个样本的两个值进行排序(升降序都可以)
- 以排序后的样本值b去寻址原样本集的样本,依次按排序的顺序执行操作即可
def randomlizeSample(X_row, y_row):
nSample, nFeat = np.shape(X_row)
inx1 = DataFrame(np.random.randn(nSample), columns = ['randVal'])
inx2 = Da