[Spark] Spark를 이용한 보스턴 주택 가격 예측 모델 제작

Peter·2021년 7월 26일
0

Spark

목록 보기
6/11

설치 & 세션 셋팅

!pip install pyspark==3.0.1 py4j==0.10.9 
  • 파이썬 스파크를 위해 pyspark 설치해주고
  • 자바가상머신상 오브젝트를 사용하기 위해 py4j 설치해줌(파이썬 for JAVA)
from pyspark.sql import SparkSession

spark = SparkSession \
    .builder \
    .appName("Boston Housing Linear Regression example") \
    .getOrCreate()
  • 앱네임을 설정해 세션을 설치
spark

  • 만들어진 세션 정보

보스턴 주택 가격 예측 모델 만들기

데이터 불러오기

!wget https://s3-geospatial.s3-us-west-2.amazonaws.com/boston_housing.csv
  • 트레이닝할 정보가 담긴 csv를 다운받음
!ls -tl

  • 다운받은 csv 잘 위치하는지 확인
data = spark.read.csv('./boston_housing.csv', header=True, inferSchema=True)
  • 다운받은 csv를 spark를 통해 불러옴
data.printSchema()

  • 불러온 csv 데이터 정보를 컬럼 이름과 속성으로 제공

피처 벡터 만들기

from pyspark.ml.feature import VectorAssembler

feature_columns = data.columns[:-1]
assembler = VectorAssembler(inputCols=feature_columns, outputCol="features")
  • Y값(medv)를 제외한 컬럼을 가져오고 벡터어셈블을 통해 row 하나를 벡터화 시킴
data_2 = assembler.transform(data)

  • 어셈블에 원래 데이터를 붙여줌

훈련용과 테스트용 데이터 스플릿, Linear Regression 모델 만들기

train, test = data_2.randomSplit([0.7, 0.3])
  • randomSplit 메소드를 통해 7:3으로 데이터를 나눔
from pyspark.ml.regression import LinearRegression

algo = LinearRegression(featuresCol="features", labelCol="medv")
model = algo.fit(train)
  • 리니어리그레션 모델을 스파크로부터 임포트해주고
  • 들어오는 데이터중 x값을 features, y값을 medv로 설정해줌
  • 학습데이터로 학습시켜줌

모델 성능 측정

evaluation_summary = model.evaluate(test)
  • 학습된 모델 메소드 evaluate로 테스트 데이터로 평가를 진행
evaluation_summary.meanAbsoluteError

3.497902588473653
  • 평균오차 절대값 기준
evaluation_summary.rootMeanSquaredError

5.183455868492738
  • 루트민스퀘어 기준
evaluation_summary.r2

0.6745318757463364
  • r2 예측값

모델 예측값 살펴보기

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

  • 결과값에 테스트 데이터를 더해서 출력해봄
  • medv와 비교해 실제 예측값과 얼마나 다른지 육안으로 평가

학습 모델 저장하기

model.save("boston_housing_model")
  • 이름을 정해 모델 저장
!ls boston_housing_model

data  metadata
  • 저장된 데이터 확인하면 데이터와 메타데이터 가지고 있음
!ls -tl 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_model2" 
model.save(path)
  • 학습된 모델을 구글드라이브에 저장

저장된 모델 불러 사용하기

from pyspark.ml.regression import LinearRegressionModel

loaded_model = LinearRegressionModel.load(path)  # "boston_housing_model")
  • 모델이 저장된 위치를 path로 가지고 있음
  • path를 통해 저장된 모델을 가져옴
profile
컴퓨터가 좋아

0개의 댓글