python大规模数据处理技巧之二:机器学习中常用操作

本文介绍了Python在大规模数据处理中的常见操作,包括数据预处理的随机化技术,如随机抽样、数据集切分、样本位序随机化以及处理不平衡分类问题。还探讨了数据集转换,如在numpy、list和dataframe之间转换的实用方法,为机器学习任务提供高效的数据准备策略。
摘要由CSDN通过智能技术生成

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值