티스토리 뷰
스파크는 오라클에서 제공하는 언어(?)라고 합니다.
실시간으로 데이터를 병렬처리하는데 유용하다고 알려져 있으며,
java, scala, python 세 언어를 활용하여 사용할 수 있습니다.
세 언어 중 파이썬을 활용하여 데이터를 분석해보도록 하겠습니다.
그 이유는 파이썬의 장점인 데이터 분석은 살리고 단점인 전처리 속도를 보완하기 위해서입니다.
pyspark라는 모듈을 사용하여 python에서 spark를 사용할 수 있습니다.
프로젝트를 진행하면서 배우는게 가장 빠르게 습득할 수 있는거라 판단되어
러닝 스파크(번개같이 빠른 데이터 분석)에 나와있는 예제를 보며 진행해보록 하겠습니다.
데이터 분석의 첫 번째 편으로 메일 스팸분류기를 만들어보도록 하겠습니다.
#pyspark 불러오기
from pyspark import SparkContext
sc = SparkContext()
from pyspark.mllib.regression import LabeledPoint #라벨을 표시하기 위해 사용 from pyspark.mllib.feature import HashingTF #단어를 숫자로 변환하고 빈도수를 매핑하기 위해 사용 from pyspark.mllib.classification import LogisticRegressionWithSGD #SGD 즉 확률론적경사하강법을 적용한 로지스틱 회귀분석을 위해 사용
#파일읽기
spam = sc.textFile("C:/spark/data/mllib/spam.txt") normal = sc.textFile("C:/spark/data/mllib/normal.txt")
#HashingTF 기능 사용하기 위해 축약어로 정의
tf = HashingTF()
#문장을 빈칸을 기준으로 자른 후, 단어별로 몇 번 나왔는지를 체크하는 함수
spamFeatures = spam.map(lambda email : tf.transform(email.split(" "))) normalFeatures = normal.map(lambda email : tf.transform(email.split(" ")))
#라벨 표시
spamExamples = spamFeatures.map(lambda features : LabeledPoint(1, features)) normalExamples = normalFeatures.map(lambda features : LabeledPoint(0, features))
#두 데이터를 하나로 합침
trainingData = spamExamples.union(normalExamples) trainingData.cache() #메모리에 올려놓기
#학습데이터로 모델만들기
model = LogisticRegressionWithSGD.train(trainingData)
#테스트 데이터 만들기
spamTest = tf.transform("Dear sir, I am a Prince in a far kingdom you have not heard of.".split(" ")) normalTest = tf.transform("Patrick, How are you? Love, Dad".split(" "))
#결과 확인
print("Prediction for positive test example: %f" % model.predict(spamTest)) print("Prediction for negative test example: %f" % model.predict(normalTest))
프린트해보면 결과가 모두 0.0000으로 나오고 있습니다.
그 원인을 파악해본 결과, 트레이닝 데이터와 테스트 데이터에서 같은 단어는 동일한 숫자로 변환이 되어야하는데
현재의 코드로는 그렇게 되지 않고 있었습니다.
그 결과, 학습 데이터와 테스트 데이터는 아예 별게의 것으로 모델이 인식하여 제대로 된 분류를 하지 못하게 된 것입니다.
(예를 들면 트레이닝 데이터에서 'is'라는 단어가 545라는 숫자로 변환이 되었으면, 테스트에서도 'is'라는 단어는 545라는 숫자로 변환이 되어야했지만 파싱결과는 그러하지 않았습니다.)
해결방법을 찾아본 후 글을 수정하도록 하겠습니다.
'파이썬' 카테고리의 다른 글
S&P 500 Index를 활용한 KOSPI 기업 주식 분석 및 시뮬레이션-2 (0) | 2024.04.25 |
---|---|
S&P 500 Index를 활용한 KOSPI 기업 주식 분석 및 시뮬레이션-1 (0) | 2024.04.24 |
파이썬_주식데이터를 활용한 회귀 신경망 스터디 4. 회귀 신경망 응용편 (0) | 2018.12.15 |
파이썬_주식데이터를 활용한 회귀 신경망 스터디 3.회귀 신경망 코드 (0) | 2018.12.08 |
파이썬_주식데이터를 활용한 회귀 신경망 스터디 2.회귀분석실습 (1) | 2018.11.28 |