앞선 글에서 pyspark Session을 설정하는 법과 csv 파일을 불러오는 방법에 대해서 다루어 보았다. 이번에는 pyspark에서 csv 파일을 불러와 간단한 ML(machine Learning)을 수행해보자.
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('missing').getOrCreate()
training = spark.read.csv('dataset/test2.csv', header=True, inferSchema=True)
training.printSchema()
training.show(4)
inferSchema = True 로 설정해줌으로써 age, Experience, Salary 변수가 integer 형태로 불러와지는 것을 확인할 수 있다.머신러닝의 기본적인 내용은 독립변수를 통해 종속변수를 예측하는 것을 의미한다. 나이와 경력을 기반으로 해당 사람의 연봉을 예측하는 모델을 구축해보자.
from pyspark.ml.feature import VectorAssembler
featureassembler = VectorAssembler(
inputCols=['age', 'Experience'],
outputCol='Independent Features'
)
output = featureassembler.transform(training)
pyspark.ml.feature에는 머신러닝에 사용되는 다양한 함수들이 존재한다. 거기서 VectorAssembler는 독립변수를 만들어주는 함수라고 보면 된다. 우리는 독립변수로 age, Experience를 사용할 것이며, age, Experience를 inputCols로 받아 outputCol에는 'Independent Features'라고 명시해줄 수 있다. 그 후 transform으로 변형해 output을 확인하면 다음과 같다.
age와 Experience 변수가 Independent Features라는 column으로 새로이 생성되고 각 값들이 리스트 구조로 입력된 것을 확인할 수 있다. 이로써 머신러닝을 수행하기 위한 독립변수 생성은 완료 되었다. 데이터 처리가 완료되었으니 데이터프레임에서 필요한 column만 추출해 새로운 데이터 프레임을 생성할 수 있다.
생성된 데이터 프레임을 기반으로 train set과 test set을 분할하고, train set은 학습, test set은 평가를 진행할 것이다. python에서는 sklearn 패키지에 존재하는 함수로 train_test_split을 수행해서 진행하고 LinearRegression 함수를 통해 적용했지만 pyspark에서는 아래와 같은 코드를 수행하여 분석을 수행한다.
finalized_data = output.select(['Independent features', 'Salary'])
from pyspark.ml.regression import LinearRegression
train_data, test_data = finalized_data.randomSplit([0.75, 0.25], seed = None)
regressor = LinearRegression(featurescol = 'Independent features', labelCol = 'Salary')
regressor = regressor.fit(train_data)
fitting된 regressor를 통해 해당 선형식의 절편과 기울기를 얻을 수도 있고, 새로운 데이터를 입력받아 Salary를 예측할 수도 있다.
'Python > Pyspark' 카테고리의 다른 글
[pyspark] csv 파일 불러오기 (0) | 2022.02.21 |
---|---|
[pyspark] 스파크 시작하기 (0) | 2022.02.20 |
[pyspark] 환경 설정 (0) | 2022.02.17 |