Just Fighting
[PySpark] 나이브 베이즈 실습 본문
728x90
데이터 불러오기는 아래 링크 참고▼
2022.02.24 - [Big Data] - [Spark] pyspark로 hdfs 데이터 불러오기
먼저 라이브러리부터 import
from pyspark.ml.classification import NaiveBayes
from pyspark.ml.evaluation import MulticlassClassificationEvaluator
from pyspark.ml.feature import VectorAssembler
공식 문서에서는 아래 사진과 같은 데이터를 사용하기 때문에
바로 데이터를 분리하고 모델을 생성하지만 내가 가진 데이터는 그렇지 않기 때문에
VectorAssembler 과정을 거쳐야 한다.
# feature 묶기
assembler = VectorAssembler(
inputCols=data.columns[1:],
outputCol="features")
data = assembler.transform(data)
'win'을 제외한 나머지 컬럼들을 하나로 묶어주고, 그 묶음을 다시 데이터에 추가한다.
그리고 데이터를 학습 데이터와 테스트 데이터로 분리!
# 데이터 분리
train_data, test_data = data.randomSplit(weights=[0.8, 0.2], seed=13)
다음은 모델을 생성한다.
modelType에는 multinomial, bernoulli, gaussian이 있다. 필요한 타입을 사용하면된다.
그리고 featuresCol에는 아까 묶었던 컬럼명을 써주고, labelCol에는 분류할 컬럼을 넣어주면 된다.
# 모델 생성 & 학습 - multinomial
nb = NaiveBayes(smoothing=1.0, modelType="multinomial", featuresCol='features',labelCol='win')
model = nb.fit(train_data)
# 샘플 출력
predictions = model.transform(test_data)
predictions.select(['win','prediction','probability']).show(20, False)
정확도를 측정해보자.
정확도는 그리 높진 않았다,,
# 정확도 측정
evaluator = MulticlassClassificationEvaluator(labelCol="win", predictionCol="prediction", metricName="accuracy")
accuracy = evaluator.evaluate(predictions)
print("Test set accuracy = " + str(accuracy))
마지막으로 bernoulli를 한번 해보려고 했으나, 오류로 인해 실패^^
[참고]
https://spark.apache.org/docs/latest/ml-classification-regression.html#naive-bayes
728x90
'ML & DL' 카테고리의 다른 글
SimpleRNN 이해하기 (0) | 2022.07.24 |
---|---|
RNN 개념정리 (0) | 2022.07.24 |
[개념 정리] 나이브 베이즈 (Naive Bayes) (0) | 2022.06.08 |
LSTM을 이용한 텍스트 생성 연습(2) - 모델 생성 (2) | 2022.06.02 |
LSTM을 이용한 텍스트 생성 연습(1) - 데이터 전처리 (0) | 2022.06.01 |
Comments