Machine Learning/Intro to Machine Learning with Python
-
[IMLP] Chapter 7. 텍스트 데이터 다루기Machine Learning/Intro to Machine Learning with Python 2022. 5. 23. 15:25
** 자연어 처리와 같이 텍스트 데이터 분석할 일 있을 때 다시 읽어보기 [문자열 데이터 타입] - 문자열 데이터 종류: 범주형 데이터, 범주에 의미 연결시킬 수 있는 임의의 문자열, 구조화된 문자열 데이터, 텍스트 데이터 - 범주열 데이터: 고정된 목록으로 구성 - 구조: ex. 주소, 장소, 사람 이름, 날짜, 전화번호, 식별번호 - 텍스트 데이터: ex. 리뷰, 작품, 문서, 전자책.. [예제 애플리케이션: 영화 리뷰 감성 분석] !tree -dL 2 data/aclImdb #셸 명력 실행하는 Ipython의 매직 명령ㅇ어 !rm -r data/aclImdb/train/unsup [텍스트 데이터를 BOW로 표현하기] - 토큰화: 문서에 포함된 단어로 나눔 - 어휘 사전 구축: 어휘를 모으고 번호를 ..
-
[IMLP] Chapter 6. 알고리즘 체인과 파이프라인Machine Learning/Intro to Machine Learning with Python 2022. 5. 23. 15:07
- 데이터 변환 과정과 머신러닝 모델을 쉽게 연결해주는 Pipeline 파이썬 클래스 - 교차 검증의 분할 방식은 모델이 새 데이터를 만났을 때 올바로 반영하지 못할 수 있기 때문에 Pipeline 사용 from sklearn.pipeline import Pipeline pipe = Pipeline([("scaler", MinMaxScaler()), ("svm", SVC())) pipe.fit(X_train, y_train) pipe.sore(X_test,y_test) #. 그리드 서치에 파이프라인 적용하기 param_grid = {'svm__C': [0.001, 0.01, 0.1, 1, 10, 100], 'svm_gamma': [0.001, 0.01, 0.1, 1, 10, 100]} grid = Gri..
-
[IMLP] Chapter 5. 모델 평가와 성능 향상Machine Learning/Intro to Machine Learning with Python 2022. 5. 23. 14:35
- 데이터를 훈련 세트와 테스트 세트로 나누는 이유는 새로운 데이터에 모델이 얼마나 잘 일반화되는지 측정하기 위함 [교차 검증] - cross-validation - 일반화 성능 재기 위해 훈련 세트/테스트 세트로 나누는 것보다 더 안정적이고 뛰어난 통계적 평가 방법 - 데이터를 여러 번 반복해서 나누고 여러 모델을 학습하며 가장 널리 사용되는 방법은 k-겹 교차 검증 #. scikit-learn의 교차 검증 from sklearn.model_selection import cross_val_score form sklearn.datasets import load_iris from sklearn.linear_model import LogisticRegression iris = load_iris() logre..
-
[IMLP] Chapter 4. 데이터 표현과 특성 공학Machine Learning/Intro to Machine Learning with Python 2022. 5. 23. 13:15
- 연속형 특성/ 범주형 특성 혹은 이산형 특성 - 특성 공학: 가장 적합한 데이터 표현을 찾는 것 [범주형 변수] #. 원-핫-인코딩(가변수) - 범주형 변수 표현 방법 - 원-핫-인코딩 (one-hot-encoding) 혹은 원-아웃-오브-엔 인코딩 (one-out-of-N encoding) 혹은 가변수(dummy variable) - 특성 하나가 네 개의 새로운 특성으로 인코딩되는데, 어떤 workclas값에 해당하는 특성은 1이 되고 나머지 세 특성은 0이 됨 (ex 1000,0100,0010,0001) - 범주형 데이터 문자열 확인하기 위해 아래 함수로 유일한 값이 각각 몇 번 나타나는지 출력 data.gender.value_counts() - pandas의 get_dummies 함수로 데이터를..
-
[IMLP] Chapter 3. 비지도 학습과 데이터 전처리 (2)Machine Learning/Intro to Machine Learning with Python 2022. 5. 23. 11:32
[차원 축소, 특성 추출, 매니폴드 학습] - 지도 학습을 사용해 데이터 변환하는 이유의 일반적인 동기는 시각화, 데이터 압축, 추가적인 처리를 위함 #. 주성분 분석(PCA) - 통계적으로 상관관계가 없도록 데이터셋을 회전시키는 기술 - 회전한 뒤 데이터 설명하는데 얼마나 중요하냐에 따라 종종 새로운 특성 중 일부만 선택 - 주성분: 데이터에 있는 주된 분산의 방향 - 유방암 데이터로 예제 연습 fig, axes = plt.subplots(15, 2, figsize=(10,20)) malignant = cancer.data[cancer.target == 0] benign = cancer.data[cancer.target == 1] ax = axes.ravel() for i in range(30): _,..
-
[IMLP] Chapter 3. 비지도 학습과 데이터 전처리 (1)Machine Learning/Intro to Machine Learning with Python 2022. 5. 23. 10:51
비지도 학습이란 알고 있는 출력값이나 정보 없이 학습 알고리즘을 가르쳐야 하는 모든 종류의 머신러닝 [비지도 학습의 종류] - 비지도 변환 (unsupervised transformation)과 군집 (clustering) #. 비지도 변환 - 데이터를 새롭게 표현하여 사람이나 다른 머신러닝 알고리즘이 원래 데이터보다 쉽게 해석할 수 있도록 만드는 알고리즘 - 널리 사용되는 분야: 고차원 데이터를 특성 수 줄이면서 꼭 필요한 특징을 포함한 데이터로 표현하는 방법인 차원 축소 #. 군집 알고리즘 - 데이터를 비슷한 것끼리 그룹으로 묶음 [비지도 학습의 도전 과제] - 가장 어려운 일은 알고리즘이 뭔가 유용한 것을 학습했는지 평가하는 것 - 레이블이 없는 데이터에 적용하기 때문 - 스케일 조정도 비지도 방식..
-
[IMLP] Chapter 2. 지도 학습 (3) - 분류 측의 불확실성 추정Machine Learning/Intro to Machine Learning with Python 2022. 5. 18. 22:42
- 불확실성 추정할 수 있는 함수 두 개: decision_function 과 predict_proba from sklearn.ensemble import GradientBoostingClassifier gbrt = GradientBoostingClassifier(random_state=0) [결정 함수] - decision_function 반환값의 크기는 (n_samples,) gbrt.decision_function(X_test) - 양성 클래스인 클래스 1에 속한다고 믿는 정도 (음수 값은 다른 클래스) - 음성 클래스는 classes_ 속성의 첫 번째 원소이고 양성 클래스는 classes_ 두 번째 원소 # pred = gbrt.predit(X_test) greater_zero = (gbrt.de..
-
[IMLP] Chapter 2. 지도 학습 (3) - 지도학습 알고리즘 (7): 신경망(딥러닝)Machine Learning/Intro to Machine Learning with Python 2022. 5. 18. 22:27
- 신경망 알고리즘 혹은 딥러닝 - 딥러닝 알리즘의 출발점이며 간단하게 분류와 회귀에 쓸 수 있는 다층 퍼셉트론(Multilayer perceptrons, MLP) (혹은 피드포워드 신경망, 신경망) [신경망 모델] - MLP는 여러 단계를 거쳐 결정을 만들어내는 선형 모델의 일반화된 모습 - 가중치 합을 만드는 과정이 여러 번 반복되며, 중간 단계를 구성하는 은닉 유닛 (hidden unit) 계산하고 최종 결과 산출을 위해 다시 가중치 합을 계산함 - 각 은닉 유닛의 가중치 합을 계산한 후 그 결과에 비선형 함수인 렐루(ReLU)나 하이퍼볼릭 탄젠트(hyperbolic tangent, tanh) 적용 line = np.linspace(-3,3,100) plt.plot(line, np.tanh(line..