2016-10-12 3 views
6

최신 2.0.1 릴리스에서 apache-spark에 대한 sklearn의 http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.StratifiedShuffleSplit.html과 비슷한 것이 있는지 궁금합니다.스파크 트레인 테스트 스플릿

지금까지 나는 무겁게 불균형 한 데이터 세트를 기차/테스트 샘플로 나누는 데별로 적합하지 않은 것 같아 https://spark.apache.org/docs/latest/mllib-statistics.html#stratified-sampling만을 찾을 수있었습니다.

+0

참조 [예 : 기차 검증 분할을 통해 모델 선택] (https : //로 스파크 .apache.org/docs/latest/ml-tuning.html # train-validation-split) ** TrainValidati onSplit **은 하나의 (훈련, 테스트) 데이터 세트 쌍을 만듭니다. trainRatio 매개 변수를 사용하여 데이터 세트를이 두 부분으로 나눕니다. –

+0

감사. 나는 그것에 대해 몰랐다. 그러나 TrainValidationSplit은 임의 화되거나 시작된 분할을 지원하지 않습니다. 내가 여기서 뭔가를 놓치고 있니? –

+2

맞아,이 [기차/교차 유효성 검사 세트를 분할 할 때 균형 클래스 레이블 지원]에 대한 Jira 티켓이 있습니다 (https://issues.apache.org/jira/browse/SPARK-8971). 따라서 Mllib은 아직이 기능을 지원하지 않습니다. –

답변

0

이 답변은 Spark에만 국한된 것은 아니지만, Apache beam에서는 열차를 66 %로 나누고 33 %를 테스트하기 위해이 작업을 수행합니다 (예를 들어 설명하기 만하면 아래의 partition_fn을보다 정교하게 사용자 정의하고) 등을 어떤 방향으로 버킷 편견 선택의 수를 지정하거나 임의 치수에 걸쳐 공정한 보장 :

raw_data = p | 'Read Data' >> Read(...) 
 

 
clean_data = (raw_data 
 
       | "Clean Data" >> beam.ParDo(CleanFieldsFn()) 
 

 

 
def partition_fn(element): 
 
    return random.randint(0, 2) 
 

 
random_buckets = (clean_data | beam.Partition(partition_fn, 3)) 
 

 
clean_train_data = ((random_buckets[0], random_buckets[1]) 
 
        | beam.Flatten()) 
 

 
clean_eval_data = random_buckets[2]