본문 바로가기

Python/머신러닝+딥러닝 Ⅰ11

비지도학습 : K-means(평균) 알고리즘 □ K-means(평균) 알고리즘 ○ 평균값이 클러스터 중심에 위치하기 때문에 클러스터 중심 또는 센트로이드라고 부름 ○ 무작위로 k개의 클러스터 중심을 정함 ○ 각 샘플에서 가장 가까운 클러스터 중심을 찾아 해당 클러스터의 클러스터의 샘플로 지정 ○ 클러스터에 속한 샘플의 평균값으로 클러스터 중심을 변경 ○ 클러스터 중심에 변화가 없을때까지 2번으로 돌아가 반복 □ 코드 **비지도학습이라 fit 과정에서 타겟데이터를 사용하지 않음. ○ 데이터 로드 #데이터 로드 import numpy as np fruits = np.load("C:/dPython/fruits_300.npy") fruits_2d = fruits.reshape(-1,100*100) #차원죽소를 통한 2차원 변경 for 모델훈련을 위해 fr.. 2024. 4. 6.
비지도학습 : 군집 알고리즘 기본 □ 비지도학습 : 타깃이 없을때 사용하는 머신러닝 알고리즘임. □ 예제 #라이브러리 import numpy as np import matplotlib.pyplot as plt #데이터 로드 fruits = np.load("../jupyterNotebook/data/fruits_300.npy") print(f"차원 : {fruits.ndim}") print(f"형태 : {fruits.shape}") print("첫번째 차원은 샘플개수 300, 두번째 차원은 높이 100, 세번째 차원은 너비 100") print("\n") print(fruits[:3]) #첫번째 행 데이터 출력 print(fruits[0,0,:]) #이미지화 : imshow plt.imshow(fruits[0], cmap="gray") p.. 2024. 3. 26.
Ensemble Model □ 정형 데이터를 다루는데 가장 뛰어난 성과를 내는 알고리즘이 앙상블 학습(ensemble learning) □ 앙상블 학습의 대표적인 모델을 랜덤 포레스트(Random Forest)를 들 수 있음. □ 랜덤 포레스트는 결정 트리를 랜덤하게 만들어 결정트리(나무)의 숲을 만듬. □ 그리고 각 결정 트리의 예측을 사용해 최종 예측을 만듬. □ 데이터를 랜덤하게 만드는데 이 데이터를 만드는 방법이 독특. 우리가 입력한 훈련 데이터에서 랜덤하게 샘플을 추출하여 훈련 데이터를 만드는데 이 때 한 샘플이 중복되어 추출될수 있음. □ 이러한 샘플을 중복이 허용되는 샘플, 즉, 부트스트랩 샘플(bootstrap sample)이라고 부름. □ 랜덤하게 선택한 샘플과 특성을 사용하기 때문에 훈련 세트에 과대적합되는 것을.. 2024. 3. 25.
교차검증 □ 교차검증이란 테스트 세트만으로 모델학습의 일반화 정도를 검증하기에 부족하여, 기존 트레이닝세트에서 검증세트를 분리 후 Fold 교차검증을 통해 모델에 대한 학습 일반화를 향상시키는 것. □ 예제 ○ 데이터 호출 import pandas as pd wine = pd.read_csv("https://bit.ly/wine_csv_data") ○인풋/타깃 데이터 분리 #타깃데이터 target = wine["class"].to_numpy() #특성데이터 data = wine[["alcohol", "sugar", "pH"]].to_numpy() print(data.shape) ○트레이닝, 테스트 데이터 나누기 #훈련/테스트 세트 나누기 from sklearn.model_selection import train_.. 2024. 3. 22.
Decision Tree(결정트리 알고리즘) □ 로지스틱회귀란 LinearRegression에서 발전된 모델로 분류에 사용되는 모델임. □ 이진분류인가 또는 다중분류인가에 따라 시그모이드 함수와 소프트맥스 함수를 적용하여 분류된 타겟에대한 확률을 출력함. □ 예제 ○ 데이터 호출 #라이브러리 및 데이터호출 import pandas as pd wine = pd.read_csv("https://bit.ly/wine_csv_data") wine.head() ○ 데이터 EDA #데이터 EDA print(wine.info()) print(wine.describe()) ○ 인풋/타겟 데이터 분리 #데이터 분리 : 인풋, 타겟 data = wine[["alcohol", "sugar", "pH"]].to_numpy() #셋 배열로변환 target = wine[".. 2024. 3. 22.
확률적경사하강법 □ 확률적경사하강법 □ 새로운 데이터가 추가될 때마다 새로운 모델을 생성/학습해야함 □ 기존의 모델과 모델 세팅등을 최대한 유지하면서 업데이트하는 최적화 방법. 알고리즘 모델은 아님. 즉, 훈련방법 또는 최적화 방법임 ○ 확률적경사하강법 : 훈련세트를 한번 모두 사용하는 과정 ○ 미니배치 경사하강법 : 여러개씩 꺼내기 ○ 배치경사 하강법 : 몽땅꺼내기 □ 에포크 : 훈련세트를 한번 모두 사용하는 과정 □ 손실함수는 0에 가까울수록 아주 큰음수가 되기 때문에 손실을 아주크게만들어 모델에 큰 영향을 끼침 □ 예제 ○ 데이터 호출 import pandas as pd fish = pd.read_csv("https://bit.ly/fish_data") fish.head() ○ 인풋, 타겟데이터 분리 #데이터전처리.. 2024. 3. 22.
Logistic_KNN □ K-최근접 이웃 알고리즘은 주변 이웃의 클래스 비율과 확률을 기반으로 대상을 분류함 □ 그렇다면 렄키백이 있다고 가정하고, 렄키백마다 타겟별 꺼내질 확률은 어떻게 알까? □ 타겟값이 2개인 이진분류일때는 시그모이드(로지스틱) 함수를 사용하고, 타겟값이 3개 이상인 소프트 맥스일 경우에는 소프트맥스함수를 사용하여, 인풋값의 이웃들에 대한 확률 기반으로 특정 값으로 분류되는 것을 확인할 수 잇음 □ 예제 ○ 데이터 호출 및 확인 #데이터 호출 및 확인 import pandas as pd fish = pd.read_csv("https://bit.ly/fish_csv_data") print(fish.head(2)) print("\n") #타겟값 중복값 제거하여 확인 print(pd.unique(fish["S.. 2024. 3. 22.
규제(L1, L2)와 Ridge, Lasso https://dandora-90.tistory.com/298 Multiple Regression(다중회귀) https://dandora-90.tistory.com/295 KNN_Regression&LinearRegression □ K 최근접 이웃 회귀(K-NN Regression) ○ K-최근접 이웃 회귀모델은 분류와 동일하게 가장먼저가까운 k개의 이웃을 찾음. ○ 그다음 이웃샘플의 dandora-90.tistory.com 위 글에 이어서.. 학습점수를 높이기위해 속성을 엄청나게 늘리고 학습을 했더니 과대적합이 발생하였음. 무엇이 문제일까? 킹받는다... 아마 행 수 보다 속성 수가 많아, 과대적합이 발생된 것으로 예상되어, 조치가 필요하다고 생각됨. 과대적합을 해결하기위해 규제가 필요하다고 판단했고 .. 2024. 3. 15.
Multiple Regression(다중회귀) https://dandora-90.tistory.com/295 KNN_Regression&LinearRegression □ K 최근접 이웃 회귀(K-NN Regression) ○ K-최근접 이웃 회귀모델은 분류와 동일하게 가장먼저가까운 k개의 이웃을 찾음. ○ 그다음 이웃샘플의 타깃값을 평균하여 샘플의 예측값으로 사용. ○ 사 dandora-90.tistory.com 위 글에서 농어의 길이로 무게 예측을 위해 Linear Regression(선형회귀)를 사용하여 트레이닝/테스트 점수가 올랐으나 약간의 과소적합 경향이 보였음. 이를 해결하기위해 Multiple Regression(다중회귀)를 사용하여 트레이닝/테스트 점수관련 과대/과소적합을 방지하고자함. 우선 다항회귀와 다중회귀의 차이를 알아보자. 다항회.. 2024. 3. 15.