본문 바로가기

Data/Data Science

[Pyspark] pyspark 내장 ML 모델사용

반응형

사용한 모델은 총 3개로(크게보면 두개) : 2개의 클러스터링 1개의 지도학습(Gradient Boostring Tree)

pyspark에서 다음과 같이 선언

from pyspark.ml.clustering import KMeans, BisectingKMeans
from pyspark.ml.classification import GBTClassifier

모델선언은 sklearn과 비슷하게 선언하면되는데 feature을 넣어줄때 약간 다른점이있다.

바로 train이나 test 데이터셋에 features라는 column이 있어야만 학습이 진행된다.

따라서 feature로 선택한 column들을 한번에 모아서 features라는 column을 새로 선언해줘야한다.

 

당연히 여기에 사용되는 pyspark 함수가 있다.

from pyspark.ml.feature import VectorAssembler

선언을 한뒤 VectorAssembler에 inputCols엔 feature로 사용하고싶은 column을 리스트형으로 집어넣고, outputCol에서는 벡터화시킨 column의 이름을 정의해주면된다. 다음과같이말이닷

vecAssembler = VectorAssembler(inputCols = ['hi', 'your', 'car')
train_set = vecAssembler.transform(result.fillna(0))
# result는 학습에 사용하고자하는 dataframe

이렇게 해주면 train_set를보면 features라는 column이 새롭게 생성이되고 이제 sklearn에서 학습하는 방식대로 dataframe을 넣어주면 된다.

# clustering
km = KMeans().setK(2)
print(km.explainParams())

kmModel = km.fit(train_set)

# prediction
kmModel.transform(test_set)

# classification
gbt = GBTClassifier(labelCol='check', featuresCol='features')
model = gbt.fit(train_set)

model.transform(test_set)

sklearn과 다른점이라면 학습된 모델에서 결과값을 보기위해선 .predict가 아닌 .transform을 사용하고있다.

반응형