📄 네이버 쇼핑 리뷰 데이터를 이용해 각각 긍정/부정 리뷰의 워드 클라우드를 만들어보고, 긍정/부정을 분류할 수 있는 모델을 만들어보세요.
2-2. 훈련 데이터 / 테스트 데이터 나누기
강의에서는 훈련 데이터 / 테스트 데이터가 이미 나누어져 있는 데이터를 사용했었습니다.
그럴 경우 그냥 각각 불러와서 사용하면 됐었지만, 지금 숙제에서는 데이터가 하나의 데이터프레임에 담겨있기 때문에, 이를 직접 훈련 데이터 / 테스트 데이터로 나눠줘야 합니다.
그럴 때 사용할 수 있는 것이 train_test_split이라는 함수입니다.
아래처럼 왼쪽에는 x_train, x_test, y_train, y_test 라고 적어주시고, (꼭 4개 다 적어야합니다!)
오른쪽에는 train_test_split(예측에 사용할 데이터: 여기서는 리뷰 (A), 예측할 데이터: 여기서는 긍정/부정 여부 (B), test_size = 원하는 테스트 데이터 셋의 크기) 이렇게 3가지를 명시해주면 됩니다.
그러면 왼쪽에 명시한 변수들인
x_train (훈련에 사용할 리뷰 데이터)
x_test (테스트에 사용할 리뷰 데이터)
y_train (훈련에 사용할 긍정/부정 여부)
y_test (테스트에 사용할 긍정/부정 여부)
각각에 자동으로 데이터들이 담기게 됩니다!
(데이터들이 담길 때는 test_size 에 명시한 비율대로 훈련 / 테스트 데이터가 나눠서 담겨지게 됩니다. 0.3 이라고 명시하면, 지금 있는 전체 데이터 중에 70% 는 훈련 데이터에 담기고, 30% 는 테스트 데이터에 담기게 됩니다.)
아래는 숙제 데이터를 훈련 데이터 / 테스트 데이터로 나누는 예시 코드입니다.
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(df['reviews'], df['label'], test_size = 0.3)
2-3. 리뷰(A)에 대한 벡터화
아래는 훈련용 데이터인 x_train 을 벡터화하는 과정입니다!
# dtm 을 만들고,
dtmvector = CountVectorizer()
x_train_dtm = dtmvector.fit_transform(x_train)
# dtm 을 이용해서 tfidf 벡터를 생성
tfidf_transformer = TfidfTransformer()
tfidfv = tfidf_transformer.fit_transform(x_train_dtm)
# 로지스틱 회귀를 활용한 모델 학습 예시
lr = LogisticRegression(C=10000, penalty='l2')
lr.fit(tfidfv, y_train)
x_test_dtm = dtmvector.transform(x_test) #테스트 데이터를 DTM으로 변환
tfidfv_test = tfidf_transformer.transform(x_test_dtm) #DTM을 TF-IDF 행렬로 변환
predicted = lr.predict(tfidfv_test) #테스트 데이터에 대한 예측
print("정확도:", accuracy_score(y_test, predicted)) #예측값과 실제값 비교
최종적으로 워드 클라우드 이미지와 소스 코드를 제출해주시면 됩니다! 🙂