아래 문서에서는 플랫폼에서 사용이 더 이상 권장되지 않는 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 파이프라인을 저장하는 방법을 보여줍니다. 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 파이프라인을 저장하는지 보여줍니다.
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차 다항식으로 확장합니다. 마지막으로, 이렇게 전처리된 데이터를 바탕으로 선형 회귀 모델을 학습합니다. 이러한 모든 과정을 한 번에 수행할 수 있도록 파이프라인을 구성하였습니다.