1

Pyspark 및 JPMML 라이브러리를 사용하여 파이프 라인 모델에서 PMML 모델을 생성하고 있습니다. 하지만 제대로 생성되고 있다고 생각하지 않습니다. 이를 테스트하기 위해 동일한 데이터 세트와 아래의 분류 기준을 사용하여 두 가지 파이프 라인 모델을 만들었습니다.JPMML 및 Pyspark를 사용하여 파이프 라인을 PMML로 올바르게 변환하지 못합니다.

pipeline = Pipeline(stages = [assembler, slicer,pca, binarizer,assembler2, formula,classifier]) 
pipeline2 = Pipeline(stages = [assembler, slicer, binarizer,assembler2, formula,classifier]) 

그러나 다음 코드 단편을 사용하여 PMML 파일을 생성하면 두 개의 동일한 파일이 출력됩니다. 이는 모델간에 차이가 없음을 의미합니다. 나는 혼란 스럽다. 생성 된 PMML 파일은 올바르게 변환되는 경우 달라야합니다. 제대로 바로 변환 않다면

pipelineModel1 = pipeline.fit(df) 
pmmlBytes = toPMMLBytes(spark, df, pipelineModel1) 
with open('test.pmml','wb') as output: 
output.write(pmmlBytes) 

pipelineModel2 = pipeline2.fit(df) 
pmmlBytes2 = toPMMLBytes(spark, df, pipelineModel2) 
with open('test1.pmml','wb') as output: 
output.write(pmmlBytes2) 

답변

1

생성 된 PMML 파일은 달라야한다?

반드시 그렇지는 않습니다. 이 모든 것은 분류 기능에 달려 있습니다. PCA가 생성 한 열은 단순히 클래스 분리에 "기여"하지 않기 때문에 단순히 PMML 문서에 포함되지 않을 수도 있습니다. 이 가설을 테스트하려면 DecisionTreeClassifierLogisticRegression과 같은 다른 분류 기능을 사용해보십시오.

또한 PMML 문서가 올바른지 여부를 확인하는 유일한 방법은이를 실행하고 원래 Apache Spark (ML) 결과와 비교하여 그 결과를 확인하는 것입니다.

+0

질문이 있습니다. 일부 열이 마지막 출력에 기여하지 않는다고 가정 해 보겠습니다. 그러나 입력 데이터에 대한 전처리 단계는 올바르게 수행해야합니다. 예를 들어, 전처리 단계에서 벡터 슬라이싱 등을 사용하고이를 내 파이프 라인에 포함하면 예측할 때 들어오는 데이터에 동일한 연산을 적용해야하므로 해당 정보가 PMML로 인코딩되어야합니다. 그러나 전처리 단계가 다르더라도 동일한 PMML이 어떻게 생성됩니까? – SameeraR

+0

마이닝 기능에서 사용하지 않는 열에 대해서는 사전 처리를 수행 할 필요가 없습니다. 계산 사이클 낭비 일뿐입니다. – user1808924