pyspark中数据帧的随机采样
在我的数据集中,我有730亿行。我想对它应用一个分类算法。我需要从原始数据中提取样本,以便测试我的模型 我想做一次列车测试 数据帧看起来像-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
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)