설치 & 세션 셋팅
!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
!ls -tl

data = spark.read.csv('./boston_housing.csv', header=True, inferSchema=True)
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
모델 예측값 살펴보기
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를 통해 저장된 모델을 가져옴