본문 바로가기

Study_note(zb_data)/Machine Learning

(32)
스터디노트 (HAR Data_PCA) 📌 HAR PCA 진행 🔻데이터 import → 데이터 량이 많은 경우는 어떻게 불러와질까? import pandas as pd feature_name_df = pd.read_csv('../data/features.txt', sep='\s+', header=None, names=['columns_index', 'column_name']) feature_name_df.head() feature_name = feature_name_df.iloc[:,1].values.tolist() X_train_url = 'https://raw.githubusercontent.com/PinkWink/ML_tutorial/master/dataset/HAR_dataset/train/X_train.txt' X_test_url =..
스터디노트 (PCA) 📌 PCA 🔻PCA 개념 알기 → 가장 널리 사용되는 자원 축소 기법 중 하나, 원 데이터의 분포를 최대한 보존하면서 고차원 공간의 데이터를 저차원 공간으로 변환→ 기존의 변수를 조합, 주성분을 만들어 낸다. 🔻데이터 셋으로 진행 해보기 import pandas as pd from sklearn.datasets import load_iris iris = load_iris() iris_pd = pd.DataFrame(iris.data, columns=iris.feature_names) iris_pd['species'] = iris.target iris_pd.head(6) sns.pairplot(iris_pd, hue='species', height=3, x_vars=['sepal length (cm)', ..
스터디노트 (TF-IDF 활용) 📌 TF-IDF 🔻Vectorize 한 문장을 Tfidf 벡터라이저에 변환하기 → Term Frequency - Inverse Document Frequency → TF -- 특정한 단어가 문서 내에 얼마나 자주 등장하는 지를 나타내는 값 → IDF -- 원자라는 낱말은 일반적 문서에서는 잘 나타나지 않지만, 원자에 대한 문서를 모아놓은 문서군의 경우 해당 단어는 상투어가 된다---> 각 문서들을 세분화 하여 구분할 수 있는 다른 단어들이 높은 가중치를 얻게 된다. from sklearn.feature_extraction.text import TfidfVectorizer vectorizer = TfidfVectorizer(min_df=1, decode_error='ignore') # 띄어쓰기 기준 합친 ..
스터디노트 (문장의 유사도 vectorize 활용하기) 📌 문장의 유사도 🔻CountVectorizer → 문장을 벡터로 변환하는 함수 (CountVectorizer) → 문장을 점 처럼 일종의 벡터로 표현하여, 두 문장 사이의 거리를 구하여 유사한 문장을 찾는 것 # 유사도 측정할 문자열 생성 contents = [ '상처받은 아이들은 너무 일찍 커버려', '내가 상처받은 거 아는 사람 불안해', '잘 사는 사람들은 좋은 사람 되기 쉬워', '아무 일도 아니야 괜찮아' ] # 각 문장을 형태소로 분할 from konlpy.tag import Okt t = Okt() contents_tokens = [t.morphs(row) for row in contents] contents_tokens >>>> [['상처', '받은', '아이', '들', '은', '너무..
스터디노트 (나이브 베이즈 분류) 📌 Naive Bayes Classifier 감성 분석 (eng) 🔻tokenize를 활용한다. → 지도학습이기 때문에 train 데이터 처럼 정답을 알려주어야 한다. → 전체 말뭉치를 만든다 from nltk.tokenize import word_tokenize import nltk # 1. train 데이터에서 각 sentence (문장)를 받아온다. # 2. 각 sentence의 문장을 tokenize 화 한다. (분할) # 3. set 명령이 있어서 중복이 제거 된다. train = [ ('i like you', 'pos'), ('i hate you', 'neg'), ('you like me', 'neg'), ('i like her', 'pos'), ] all_words = set( word.lo..
스터디노트 (법령 관련 분석) 📌 nltk 🔻dataset 확인 import nltk from konlpy.corpus import kobill # 기존에 있는 데이터 셋 doc_ko = kobill.open('1809890.txt').read() from konlpy.tag import Okt # Okt 활용 / doc_ko 변수에 저장된 것 중, 명사를 추출 t = Okt() token_ko = t.nouns(doc_ko) 🔻추출한 명사에 대해서 자세히 알아보기 ko = nltk.Text(token_ko, name="대한민국 국회 의안 제 1809890호") # 총 단어 개수 print(len(ko.tokens)) >>>> 735 # 중복 단어 제외 단어 개수 print(len(set(ko.tokens))) >>>> 250 # 빈..
스터디노트 (자연어 처리) 📌 konlpy (한국어 자연어 처리) -> Kkma, Hannanum, Okt 등의 패키지로 자연어 분석 처리가 가능하다. → 각각 처리하는 방식이 약간씩 차이가 있음 🔻Kkma → sentences, nouns, pos from konlpy.tag import Kkma kkma = Kkma() # 문장 추출 kkma.sentences('한국어 분석을 시작합니다 재미있어요~~') >>>> ['한국어 분석을 시작합니다', '재미있어요~~'] # 명사 추출 kkma.nouns('한국어 분석을 시작합니다 재미있어요~~') >>>> ['한국어', '분석'] # 형태소 부착 (Tagging) kkma.pos('한국어 분석을 시작합니다 재미있어요~~') >>>> [('한국어', 'NNG'), ('분석', 'NNG..
스터디노트 (credit card data 3, 4) 📌 신용카드 부정 사용자 검출해보기 3, 4 🔻Outlier를 확인 후, 제거를 하고 한 번 해보자 import seaborn as sns plt.figure(figsize=(10, 7)) sns.boxplot(data=raw_data[['V13', 'V14', 'V15']]) plt.show() def get_outlier(df=None, column=None, weight=1.5): fraud = df[df['Class']==1][column] quantile_25 = np.percentile(fraud.values, 25) #Q1 quantile_75 = np.percentile(fraud.values, 75) #Q3 iqr = quantile_75-quantile_25 iqr_weight = iq..