BigData/Spark
Spark ML 05(Pyspark)
Jonghee Jeon
2020. 5. 4. 14:57
SparkML을 이용하여 RandomForest를 수행하는 예제입니다.
RandomForest?
랜덤 포레스트(영어: random forest)는 분류, 회귀 분석 등에 사용되는 앙상블 학습 방법의 일종으로, 훈련 과정에서 구성한 다수의 결정 트리로부터 부류(분류) 또는 평균 예측치(회귀 분석)를 출력함으로써 동작한다.
Spark ML
In [1]:
df = spark.read.csv("data/affairs.csv", inferSchema=True, header=True)
In [2]:
df.printSchema()
In [7]:
df.show(5)
In [3]:
df.summary().show()
In [4]:
df.groupBy('affairs').count().show()
In [5]:
df.groupBy('rate_marriage').count().show()
In [6]:
df.groupBy('children', 'affairs').count().orderBy('children', 'affairs', 'count', ascending=True).show()
In [8]:
from pyspark.ml.feature import VectorAssembler
In [12]:
df_assembler = VectorAssembler(inputCols=['rate_marriage', 'age', 'yrs_married' \
, 'children', 'religious'], outputCol="features")
In [13]:
df = df_assembler.transform(df)
In [14]:
df.printSchema()
In [15]:
df.select(['features', 'affairs']).show(5)
In [16]:
model_df = df.select(['features', 'affairs'])
In [57]:
trainDF, testDF = model_df.randomSplit([0.8, 0.2])
In [58]:
from pyspark.ml.classification import RandomForestClassifier
In [65]:
rf_model = RandomForestClassifier(labelCol='affairs', numTrees=30, maxDepth=3, impurity='entropy').fit(trainDF)
In [66]:
rf_predictions = rf_model.transform(testDF)
In [67]:
rf_predictions.show(5)
In [68]:
from pyspark.ml.evaluation import MulticlassClassificationEvaluator
In [69]:
rf_accuracy = MulticlassClassificationEvaluator(labelCol="affairs", metricName="accuracy") \
.evaluate(rf_predictions)
In [70]:
rf_accuracy
Out[70]:
In [71]:
rf_model.save("/home/carbig/RandomForest_Model")
In [72]:
rf_model2 = rf_model.load("/home/carbig/RandomForest_Model")
In [ ]: