통계데이터8 [2022 통계청 공모전] 5. test 및 후기.. 마지막.. test padding이다. 토크나이저시키고.. tokenizer = Tokenizer() tokenizer.fit_on_texts(test) X_encoded = tokenizer.texts_to_sequences(test) 패딩시킨다... X_test = pad_sequences(X_encoded, maxlen=max_len, padding='post') 잘잘한 코드를 몇 줄 작성한 뒤, predicted에 y_pred의 argmax 다시 말해서, 최대가 되는 벡터값을 넣어주면 완료! y_pred = np.mean(pred_list,axis=0) predicted = y_pred.argmax(axis=-1) 이후 아래 그림처럼 digit_1, digit_2, digit_3이 비어있는데, 이.. 2022. 5. 16. [2022 통계청 공모전] 4. CNN-LSTM 사용 CNN-LSTM 사용하기에 앞서 PCA를 진행해주었다. PCA 함수 생성 compute_pca 함수를 만들어, covariance 행렬을 계산 covariance matrix에서 eignvector와 eigenvalue를 계산 eigenvalue를 오름차순으로 sort highest 에서 lowest로 종렬 eigen vector를 내림차순으로 sort n개의 eigenvector를 선택 후 배열 eigenvector의 transpose를 곱하여 데이터를 변환 def compute_pca(X: np.ndarray, n_components: int=2) -> np.ndarray: X_demeaned = X - X.mean(axis=0) covariance_matrix = np.cov(X_demeaned, .. 2022. 5. 15. [2022 통계청 공모전] 4. modeling with CNN-LSTM 임베딩까지 마친 set을 CNN-LSTM의 모델을 적용시키는 분류 분석을 진행하였다. CNN Algorithm : 차원 축소 단계를 거쳐 이미지를 분류하는 신경망 알고리즘이다. convolution layer , pooling layer , fully connected layer을 통해 feature 추출. LSTM(Long Short Term Memory) RNN에서 발전된 구조로 3개의 gate와 2개의 state가 존재한다. Forget Gate : 잊고자 하는 정도. 활성화함수 : sigmoid 함수 (출력값 : 0~1 사이) Input Gate : 새로운 입력을 받고자 하는 정도. 활성화함수 : sigmoid 함수 (출력값 : 0~1 사이) Output Gate : Cell State 중 어떤 .. 2022. 5. 11. [2022 통계청 공모전] 3. embedding_model Embedding_model 만들기 Word2Vec 함수 사용 from gensim.models import Word2Vec embedding_okt = Word2Vec(tokenized_okt1, size=100, window = 2, min_count=50, workers=4, iter=100, sg=1) embedding 모델을 구축한다는 것은 Word2Vec의 함수를 써서 단어벡터를 만들어준다는 뜻이다. 이후 아래 코드처럼 저장해주면 임베딩된 모델이 완성되게 된다. embedding_okt.save('/emb__okt.model') 자연어처리에서 사용하는 gensim 라이브러리는 아래를 참고하면 된다. https://radimrehurek.com/gensim/ Gensim: topic modell.. 2022. 5. 9. [2022 통계청 공모전] 2. remove stopwords (불용어 처리) check bigword split 큰 단어들을 일일이 쪼개준 뒤, 잘 쪼개져있는지 확인 후 불용어 처리를 하였다. bigword = {key: value for key, value in count.items() if len(key)>=5 and value 2022. 5. 8. [2022 통계청 공모전] 1. bigword split 이름을 bigword split이라고 지은 이유는.. tokenized를 봤을 때, noun(명사)로 토큰화하였다고 할지어도, '이벌게임'처럼 명사화가 잘 되지 않은 문장들을 더 잘게 쪼개주어 의미를 부여할 수 있도록 하기 위해서 단어수가 긴 단어의 경우, 잘게 쪼개주면 좋지 않을까 싶었다. 나중에 임베딩 모델을 구현할 때, 단어수의 빈도가 50 이상인 단어들로만 이뤄지게 하기에. 단어수의 빈도가 50 미만인 (임베딩에 영향을 주지 않는) 단어들을 Split 해주기로 하였다. count={} for j in range(len(bigword_split_okt)): for i in bigword_split_okt[j]: try: count[i] += 1 except: count[i]=1 print(count.. 2022. 5. 6. 이전 1 2 다음