분류 전체보기 122

[ML] 06-1 군집 알고리즘

비지도 학습은 머신러닝의 한 종류로 훈련 데이터에 타깃이 없다. 타깃이 없기 때문에 외부의 도움 없이 스스로 유용한 무언가를 학습해야 한다. 대표적인 비지도 학습 작업으로 군집, 차원 축소 등이 있다. 과일 사진 데이터 준비 파일을 읽기 위해 코랩으로 다운로드한다. !wget https://bit.ly/fruits_300_data -O fruits_300_data.npy import numpy as np import matplotlib.pyplot as plt 넘파이에서 npy파일을 로드하기 위해 load()메서드에 파일 이름을 전달한다. fruits = np.load('fruits_300_data.npy') print(fruits.shape) 이 배열의 첫 번째 차원(300)은 샘플의 개수, 두 번째 ..

[ML] 05-3 트리의 앙상블

앙상블 학습은 더 좋은 예측 결과를 만들기 위해 여러 개의 모델을 훈련하는 머신러닝 알고리즘이다. 이는 정형 데이터를 다루는 데 가장 뛰어난 성과를 내는 알고리즘이다. 랜덤 포레스트 랜덤 포레스트는 대표적인 결정 트리 기반의 앙상블 학습 방법이다. 부트스트랩 샘플을 사용하고 랜덤하게 일부 특성을 선택하여 트리를 만드는 특징을 지닌다. 부트스트랩이란 데이터 세트에서 중복을 허용하여 데이터를 샘플링하는 방식을 말한다. 랜덤 포레스트는 위 특징들로 인해 훈련 세트에 과대적합되는 것을 막아주고 검증 세트와 테스트 세트에서 안정적인 성능을 얻을 수 있다. RandomForestClassifier 클래스를 활용한 와인 분류 문제에 적용해보자. 첫째로 와인 데이터셋을 판다스로 불러오고 훈련 세트와 테스트 세트로 분리..

[ML] 05-2 교차 검증과 그리드 서치

검증 세트 검증 세트 : 하이퍼파라미터 튜닝을 위해 모델을 평가할 때, 테스트 세트를 사용하지 않기 위해 훈련 세트에서 다시 떼어 낸 데이터 세트 훈련 세트에서 모델을 훈련하고 검증 세트로 모델을 평가한다. 테스트하고 싶은 매개변수를 바꿔가며 가장 좋은 모델을 고르고 매개변수를 사용해 훈련, 검증 세트를 합쳐 훈련 데이터에서 모델을 다시 훈련한다. import pandas as pd wine = pd.read_csv('https://bit.ly/wine_csv_data') class 열을 타깃으로 사용하고 나머지는 특성 배열에 저장한다. data = wine[['alcohol','sugar','pH']].to_numpy() target = wine['class'].to_numpy() 훈련 세트와 테스트..

[백준] 11728 - 배열 합치기(python)

https://www.acmicpc.net/problem/11728 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거 www.acmicpc.net 문제 정렬되어있는 두 배열 A와 B가 주어진다. 두 배열을 합친 다음 정렬해서 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거나 같은 정수이다. 출력..

알고리즘 2024.01.22

[ML] 05-1 결정 트리

로지스틱 회귀로 와인 분류하기 import pandas as pd wine = pd.read_csv('https://bit.ly/wine_csv_data') 데이터셋을 판다스 데이터프레임으로 제대로 읽어 들였는지 head() 메서드를 통해 처음 5개의 샘플을 확인한다. wine.head() 판다스 데이터프레임의 info()메서드는 데이터프레임의 각 열의 데이터 타입과 누락된 데이터 확인에 유용하다. wine.info() describe()메서드는 열에 대한 간략한 통계를 출력한다. 이 메서드는 평균, 표준편차, 최소, 최대 등의 값을 보여준다. wine.describe() 위 통계를 통해 알코올 도수와 당도, pH값의 스케일이 다르다는 것을 확인할 수 있다. 표준화를 하기 전, 판다스 데이터 프레임을 넘..

[ML] 04-2 확률적 경사하강법

SGDClassifier import pandas as pd fish = pd.read_csv('https://bit.ly/fish_csv_data') Species 열을 제외한 나머지 5개는 입력 데이터로, Species 열은 타깃 데이터로 사용한다. fish_input = fish[['Weight', 'Length', 'Diagonal','Height','Width']].to_numpy() fish_target = fish['Species'].to_numpy() 훈련 세트와 테스트 세트로 나눈다. from sklearn.model_selection import train_test_split train_input, test_input, train_target, test_target = train_tes..

[ML] 04-1 로지스틱 회귀

럭키백의 확률럭키백에 생선이 7개 들어있고, 럭키백에 들어간 생선의 크기, 무게 등이 주어졌을 때 7개의 생선에 대한 확률을 출력해아한다. 데이터 준비import pandas as pd fish = pd.read_csv('https://bit.ly/fish_csv_data') fish.head() 판다스의 unique()함수를 사용하여 Species 열에서의 고유한 값들을 출력할 수 있다.print(pd.unique(fish['Species'])) species를 제외한 나머지 5개의 열을 입력 데이터로 사용한다.fish_input = fish[['Weight','Length','Diagonal','Height','Width']].to_numpy() print(fish_input[:5]) species는..

[백준] 1755 - 숫자놀이(python)

https://www.acmicpc.net/problem/1755 1755번: 숫자놀이 79를 영어로 읽되 숫자 단위로 하나씩 읽는다면 "seven nine"이 된다. 80은 마찬가지로 "eight zero"라고 읽는다. 79는 80보다 작지만, 영어로 숫자 하나씩 읽는다면 "eight zero"가 "seven nine"보다 사전순으로 www.acmicpc.net 문제 79를 영어로 읽되 숫자 단위로 하나씩 읽는다면 "seven nine"이 된다. 80은 마찬가지로 "eight zero"라고 읽는다. 79는 80보다 작지만, 영어로 숫자 하나씩 읽는다면 "eight zero"가 "seven nine"보다 사전순으로 먼저 온다. 문제는 정수 M, N(1 ≤ M ≤ N ≤ 99)이 주어지면 M 이상 N 이하..

알고리즘 2024.01.21

[ML] 03-3 특성 공학과 규제

다중 회귀 다중 회귀(multiple regression) : 여러 개의 특성을 사용한 선형 회귀 특성 공학(feature engineering) : 기존 특성을 사용해 새로운 특성을 뽑아내는 작업 데이터 준비 판다스의 read_csv()함수에 주소를 넣은 후 to_numpy()메서드를 사용해 넘파이 배열로 변경한다. import pandas as pd df = pd.read_csv('https://bit.ly/perch_csv_data') perch_full = df.to_numpy() print(perch_full) 타깃 데이터는 이전과 동일한 방식으로 준비한다. import numpy as np perch_weight = np.array([5.9, 32.0, 40.0, 51.5, 70.0, 100..

[ML] 03-2 선형 회귀

k-최근접 이웃의 한계 k-최근접 이웃의 한계를 파악하기 위해 데이터와 모델을 준비한다. import numpy as np perch_length = np.array([8.4, 13.7, 15.0, 16.2, 17.4, 18.0, 18.7, 19.0, 19.6, 20.0, 21.0, 21.0, 21.0, 21.3, 22.0, 22.0, 22.0, 22.0, 22.0, 22.5, 22.5, 22.7, 23.0, 23.5, 24.0, 24.0, 24.6, 25.0, 25.6, 26.5, 27.3, 27.5, 27.5, 27.5, 28.0, 28.7, 30.0, 32.8, 34.5, 35.0, 36.5, 36.0, 37.0, 37.0, 39.0, 39.0, 39.0, 40.0, 40.0, 40.0, 40.0..