Feature hashing과 LabelPoint
이메일을 단어로 분리한 후, 현재 원시 데이터 세트 'spam'과 'non-spam'은 한 줄짜리 메시지들로 구성되어 있어요. 이 메시지들을 분류하려면 텍스트를 특징으로 변환해야 합니다.
연습 문제의 두 번째 부분에서는 먼저 텍스트를 200차원 특징 벡터로 매핑하는 HashingTF() 인스턴스를 만들어요. 그런 다음 'spam'과 'non-spam' 파일의 각 메시지를 단어로 분리하고, 각 단어를 하나의 특징으로 매핑합니다. 이 특징들을 사용해 메시지가 'spam'인지 'non-spam'인지 판단하게 됩니다. 다음으로, 특징에 라벨을 붙입니다. 정상 메시지의 라벨은 0(스팸 아님), 'spam' 메시지의 라벨은 1(스팸)입니다. 마지막으로, 라벨이 붙은 두 데이터 세트를 결합합니다.
작업 공간에는 SparkContext sc가 준비되어 있어요. 또한 spam_words와 non_spam_words 변수도 이미 사용할 수 있습니다.
이 연습은 강의의 일부입니다
PySpark로 배우는 빅데이터 기초
연습 안내
- 이메일 텍스트를 200차원 특징 벡터로 매핑하는
HashingTF()인스턴스를 만드세요. - 'spam'과 'non-spam' 데이터셋의 각 메시지를 단어로 분리하고, 각 단어를 하나의 특징으로 매핑하세요.
- 특징에 라벨을 지정하세요: 스팸은 1, 스팸 아님은 0.
- 스팸과 스팸 아님 샘플을 하나의 데이터셋으로 합치세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Create a HashingTF instance with 200 features
tf = ____(numFeatures=200)
# Map each word to one feature
spam_features = tf.____(spam_words)
non_spam_features = tf.____(____)
# Label the features: 1 for spam, 0 for non-spam
spam_samples = spam_features.map(lambda features:LabeledPoint(____, features))
non_spam_samples = non_spam_features.map(lambda features:_____(____, features))
# Combine the two datasets
samples = spam_samples.____(non_spam_samples)