본문 바로가기

프로그래머스 데브 코스/TIL

[6기] 프로그래머스 인공지능 데브코스 78일차 TIL

1117

[13주차 - Day5] Spark

Spark 3

보스턴 주택 가격 예측 모델
# 실습

필요한 패키지 다운로드

!pip install pyspark==3.0.1 py4j==0.10.9

Spark 생성

from pyspark.sql import SparkSession

spark = SparkSession \
    .builder \
    .appName("Boston Housing Linear Regression example") \
    .getOrCreate()

데이터셋 다운로드

!wget https://s3-geospatial.s3-us-west-2.amazonaws.com/boston_housing.csv

data = spark.read.csv('./boston_housing.csv', header=True, inferSchema=True)

data.printSchema() # 데이터셋 스키마 확인
data.show() # 데이터셋 형태 확인

피쳐 벡터 만들기

from pyspark.ml.feature import VectorAssembler

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

data_2 = assembler.transform(data)

data_2.show() # 제일 마지막에 추가된 feature 행 확인

훈련용과 테스트용 데이터를 나누고 Linear Regression 모델 만들기

train, test = data_2.randomSplit([0.7, 0.3])

from pyspark.ml.regression import LinearRegression

algo = LinearRegression(featuresCol="features", labelCol="medv")
model = algo.fit(train)

모델 성능 측정

evaluation_summary = model.evaluate(test)
evaluation_summary

evaluation_summary.meanAbsoluteError

evaluation_summary.rootMeanSquaredError

evaluation_summary.r2

모델 예측값 살펴보기

predictions = model.transform(test)
predictions.show()

predictions.select(predictions.columns[13:]).show() # 정답/feature벡터/예측값만 따로 보기

모델 저장하기

model.save("boston_housing_model")

from google.colab import drive
drive.mount('/content/gdrive')

model_save_name = "boston_housing_model"
path = F"/content/gdrive/My Drive/boston_housing_model"
model.save(path)

저장된 모델 로드하기

from pyspark.ml.regression import LinearRegressionModel

loaded_model = LinearRegressionModel.load(path)

predictions2 = loaded_model.transform(test)

predictions2.select(predictions2.columns[13:]).show()