Just Fighting

[PySpark] MLlib를 이용한 로지스틱 회귀분석 본문

Big Data

[PySpark] MLlib를 이용한 로지스틱 회귀분석

yennle 2022. 3. 24. 23:56
728x90

1. 데이터 가져오기

먼저 사용할 데이터를 가져온다.

(데이터 전처리는 생략)

2022.02.24 - [ETC] - [Spark] pyspark로 hdfs 데이터 불러오기

위의 링크를 이용해 데이터를 가져온다.

 

2. feature 묶어주기 (독립변수 묶어주기)

# 독립변수 묶기

# https://spark.apache.org/docs/latest/ml-features.html#vectorassembler

from pyspark.ml.feature import VectorAssembler

assembler = VectorAssembler(
    inputCols=data.columns[1:],
    outputCol="features")

data = assembler.transform(data)

 

3. test, train data 나눠주기

여러 예시들을 봤는데, 먼저 학습, 테스트데이터를 나눠주고 피쳐를 묶는 예시도 있었고,

반대인 예시도 있었는데, 전자는 두 번 일을 해야하기 때문에 난 후자를 택했다.

(이렇게 해도 되는건지는 잘 모르겠다ㅎㅎ)

# 데이터 분리

train_data, test_data = data.randomSplit(weights=[0.8, 0.2],  seed=13)

 

4. 모델 생성

# 로지스틱 회귀분석

from pyspark.ml.classification import LogisticRegression

lr = LogisticRegression(featuresCol='features', labelCol='win')

lr_model = lr.fit(train_data)

 

5. 테스트 데이터로 결과 예측

# 테스트데이터에 대한 예측

pred = lr_model.transform(test_data)

 

 

6. 정확도 측정

# ROC

from pyspark.ml.evaluation import BinaryClassificationEvaluator
 
bcEvaluator = BinaryClassificationEvaluator(rawPredictionCol='rawPrediction', labelCol='win', metricName="areaUnderROC")
bcEvaluator.evaluate(pred)
# 정확도

from pyspark.ml.evaluation import MulticlassClassificationEvaluator

mcEvaluator = MulticlassClassificationEvaluator(predictionCol='prediction', labelCol='win', metricName="accuracy")
mcEvaluator.evaluate(pred)

 

 

모델 튜닝은 다음 게시글로~

 

 

[참고]

https://databricks.com/notebooks/gallery/GettingStartedWithSparkMLlib.html

https://runawayhorse001.github.io/LearningApacheSpark/fnn.html

https://towardsdatascience.com/machine-learning-with-pyspark-and-mllib-solving-a-binary-classification-problem-96396065d2aa

https://techblog-history-younghunjo1.tistory.com/500

https://parkaparka.tistory.com/30

https://docs.microsoft.com/ko-kr/azure/hdinsight/spark/apache-spark-creating-ml-pipelines

 

728x90
Comments