본 번역은 검증되지 않았습니다. AIP를 통해 영문원문으로부터 번역되었습니다.

scikit-learn 및 SparkML 파이프라인 사용하기

기능 중단

아래 문서에서는 플랫폼에서 사용이 더 이상 권장되지 않는 foundry_ml 라이브러리를 설명합니다. 대신 palantir_models 라이브러리를 사용하세요.

foundry_ml 라이브러리는 Python 3.9의 예정된 폐기와 함께 2025년 10월 31일에 제거될 예정입니다.

많은 머신러닝 라이브러리, 예를 들어 scikit-learn과 SparkML,은 일련의 변환을 캡슐화하기 위한 "파이프라인" 개념을 제공합니다.

foundry_ml의 이 두 패키지에 대한 기본 래퍼는 파이프라인 오브젝트 저장을 지원하지만, 개별 변환으로 파이프라인을 분해하고 이를 Stage 오브젝트로 감싸고 다시 Model로 결합하는 것을 권장합니다. 이를 통해 모델 간에 단계를 쉽게 재사용하고, 다른 패키지의 구현으로 개별 단계를 쉽게 교환할 수 있으며, 모델의 미리보기를 보는 데 추가 기능과 투명성을 제공합니다.

scikit-learn과 SparkML에 대한 이 분해-감싸기-재결합 절차를 수행하는 방법에 대한 예제는 아래를 참조하세요.

두 예제 모두 Code Workbook 구문과 Modelling Objective 튜토리얼에서의 주택 데이터를 사용합니다. 이들은 훈련된 ML 파이프라인의 구성, Model로의 변환, 단계간 데이터를 전달하기 위한 관련 입력 및 결과물 컬럼을 캡처하는 파라미터를 보여줍니다.

scikit-learn 파이프라인 예제

이 예제에서는 scikit-learn 파이프라인을 저장하는 방법을 보여줍니다. output_column_name 파라미터의 명시적 사용에 주목하세요.

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 def sklearn_pipeline_model(housing): from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeatures from sklearn.preprocessing import StandardScaler from sklearn.compose import make_column_transformer from sklearn.pipeline import Pipeline from foundry_ml import Model, Stage X_train = housing[['median_income', "housing_median_age", "total_rooms"]] # 훈련데이터의 입력값 y_train = housing['median_house_value'] # 훈련데이터의 목표값 # 벡터화 도구 만들기 column_transformer = make_column_transformer( ('passthrough', ['median_income', "housing_median_age", "total_rooms"]) ) # 벡터화 -> 표준화 -> 다항 특성 확장 -> 선형 회귀 모델의 순서로 파이프라인 구성 pipeline = Pipeline([ ("preprocessing", column_transformer), # 데이터 전처리 ("ss", StandardScaler()), # 데이터 표준화 ("pf", PolynomialFeatures(degree=2)), # 특성을 2차원으로 확장 ("lr", LinearRegression()) # 선형 회귀 모델 적용 ]) pipeline.fit(X_train, y_train) # 파이프라인을 통한 모델 훈련 # 파이프라인을 모델로 전환 # 리스트 컴프리헨션을 통해서도 생성 가능 : Model(*[Stage(s[1]) for s in pipeline.steps]) model = Model( Stage(pipeline["preprocessing"]), # 데이터 전처리 단계 Stage(pipeline["ss"], output_column_name="features"), # 표준화 단계 Stage(pipeline["pf"], output_column_name="features"), # 특성 확장 단계 Stage(pipeline["lr"])) # 선형 회귀 모델 단계 return model

SparkML 파이프라인 예제

이 예제는 어떻게 SparkML 파이프라인을 저장하는지 보여줍니다.

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 def spark_pipeline(housing): from pyspark.ml.feature import PolynomialExpansion from pyspark.ml.feature import StandardScaler from pyspark.ml.feature import VectorAssembler from pyspark.ml.regression import LinearRegression from pyspark.ml import Pipeline from foundry_ml import Model, Stage # VectorAssembler를 이용해 'median_income', "housing_median_age", "total_rooms" 피처를 하나의 벡터로 결합 assembler = VectorAssembler( inputCols=['median_income', "housing_median_age", "total_rooms"], outputCol="features" ) # StandardScaler를 이용해 벡터의 피처들을 표준화 scaler = StandardScaler(inputCol="features", outputCol="scaledFeatures", withStd=True, withMean=False) # PolynomialExpansion을 이용해 피처들의 2차 다항식 확장 수행 polyExpansion = PolynomialExpansion(degree=2, inputCol="scaledFeatures", outputCol="polyFeatures") # LinearRegression을 이용해 선형 회귀 모델 생성 lr = LinearRegression(maxIter=10, regParam=0.3, elasticNetParam=0.8, featuresCol='polyFeatures', labelCol='median_house_value') # 파이프라인 생성 (VectorAssembler, StandardScaler, PolynomialExpansion, LinearRegression 순서로 수행) pipeline = Pipeline(stages=[assembler, scaler, polyExpansion, lr]) # 파이프라인을 housing 데이터에 적합 pipeline = pipeline.fit(housing) # 파이프라인 각 단계를 모델로 변환 model = Model(*[Stage(s) for s in pipeline.stages]) return model

이 코드는 주어진 주택 데이터에 대해 선형 회귀 모델을 학습하는 과정을 파이프라인으로 구현한 것입니다. 먼저 VectorAssembler를 이용해 여러 피처를 하나의 벡터로 결합하고, 이를 StandardScaler를 이용해 표준화합니다. 그 후, PolynomialExpansion을 이용해 각 피처들을 2차 다항식으로 확장합니다. 마지막으로, 이렇게 전처리된 데이터를 바탕으로 선형 회귀 모델을 학습합니다. 이러한 모든 과정을 한 번에 수행할 수 있도록 파이프라인을 구성하였습니다.