pyspark中数据帧的随机采样

pyspark中数据帧的随机采样,pyspark,pyspark-sql,pyspark-dataframes,Pyspark,Pyspark Sql,Pyspark Dataframes,在我的数据集中,我有730亿行。我想对它应用一个分类算法。我需要从原始数据中提取样本,以便测试我的模型 我想做一次列车测试 数据帧看起来像- id age gender salary bonus area churn 1 38 m 37654 765 bb 1 2 48 f 3654 365 bb 0 3 33 f 55443

在我的数据集中,我有730亿行。我想对它应用一个分类算法。我需要从原始数据中提取样本,以便测试我的模型

我想做一次列车测试

数据帧看起来像-

id    age   gender    salary    bonus  area   churn
1      38    m        37654      765    bb     1
2      48    f        3654       365    bb     0
3      33    f        55443      87     uu     0
4      27    m        26354      875    jh     0
5      58    m        87643      354    vb     1
如何使用pyspark进行随机抽样,以便我的依赖(搅动)变量比率不会改变。
有什么建议吗?

要查看原始数据中的样本,我们可以使用spark中的样本:

df.sample(分数).show()

分数应介于[0.0,1.0]之间

例如:


df.sample(0.2).show(10)-->反复运行此命令,它将显示原始数据的不同样本。

您将在链接文档中找到示例

火花支架

您也可以使用

例如:

从pyspark.ml.evaluation导入回归评估器
从pyspark.ml.回归导入线性回归
从pyspark.ml.tuning导入ParamGridBuilder,TrainValidationSplit
#准备培训和测试数据。
数据=spark.read.format(“libsvm”)\
.load(“data/mllib/sample\u linear\u regression\u data.txt”)
训练,测试=数据。随机分割([0.9,0.1],种子=12345)
lr=线性回归(最大值=10)
#我们使用ParamGridBuilder构建一个参数网格来搜索。
#TrainValidationSplit将尝试所有值的组合,并使用
#评估者。
paramGrid=ParamGridBuilder()\
.addGrid(lr.regParam[0.1,0.01])\
.addGrid(lr.fitIntercept,[False,True])\
.addGrid(lr.elasticNetParam,[0.0,0.5,1.0])\
.build()
#在这种情况下,估计量只是线性回归。
#TrainValidationSplit需要一个估计器、一组估计器参数图和一个评估器。
tvs=列车验证分裂(估计器=lr,
参数映射=参数网格,
评估器=回归评估器(),
#80%的数据将用于培训,20%用于验证。
列车传动比=0.8)
#运行TrainValidationSplit,并选择最佳参数集。
型号=电视安装(列车)
#对测试数据进行预测。模型是参数组合的模型
#表现最好的。
模型转换(测试)\
.选择(“特征”、“标签”、“预测”)\
.show()
# an RDD of any key value pairs
data = sc.parallelize([(1, 'a'), (1, 'b'), (2, 'c'), (2, 'd'), (2, 'e'), (3, 'f')])

# specify the exact fraction desired from each key as a dictionary
fractions = {1: 0.1, 2: 0.6, 3: 0.3}

approxSample = data.sampleByKey(False, fractions)