scikit-learn
- KNeighborsClassifier() : nneighbors매개변수로 이웃의 개수를 지정, k-최근접 이웃 분류(가까운 이웃 참고 정답 예측) 모델을 만드는 사이킷런 클래스. n_jobs를 -1로 설정 시 모든 CPU 코어를 사용
위와 같은 산점도에서 특정위치의 생선이 무엇일지 주변 값을 이용하여 예측_- fit() : 모델을 훈련
- predict() : 모델을 훈련하고 예측
- score() : 성능 측정
scikit-learn
- train_test_split() : 훈련 데이터를 훈련 세트와 테스트 세트로 나누는 함수, 비율은 test_size로 지정할 수 있으면 기본값 0.25
// 예시 train_input, test_input, train_target, test_target = train_test_split(perch_full, perch_weight, random_state=42) // stratify 매개변수에 타깃 데이터를 전달 하면 클래스 비율에 맞게 데이터를 나눔.
위의 경우 파란색이 train, 주황색이 test(왼쪽 아래는 빙어, 오른쪽위는 도미)
범위 스케일 조정의 경우
method
- score() : 출력값이 높을 수록 좋음. 정확도나 결정계수 또한.
- numpy의 reshape() : 바꾸려는 배열의 크기를 지정.(원본 배열 원소의 개수와 새로 지정한 크기가 같아야함, 크기에 -1을 지정하면 나머지 원소 개수로 모두 채우라는 의미)
train_input = train_input.reshape(-1,1)scikit-learn method
- KNeighborsRegressor : k-최근접 이웃 회귀 모델을 만듬(이웃 샘플의 타깃값의 평균)
- mean_absolute_error : 타깃과 예측의 절댓값 오차를 평균하여 반환
# 테스트 세트에 대한 평균 절댓값 오차를 계산 mae = mean_absolute_error(test_target, test_prediction)

scikit-learn method
- LinearRegression() : 선형 회귀 클래스
fit_intercept 매개변수를 False로 지정 시 절편을 학습 하지 않음.from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression train_input, test_input, train_target, test_target = train_test_split(perch_full, perch_weight, random_state=42) lr = LinearRegression() lr.fit(train_poly,train_target)
다중 회귀 : 여러개의 특성을 사용한 선형 회귀 (특성이 2개면 평면을 학습 - 타깃, 특성1, 특성2의 축들을 가짐), 특성이 많은 고차원에서는 매우 복잡한 모델을 표현
특성 공학 : 기존의 특성을 사용해 새로운 특성을 뽑아내는 작업 (각 특성을 서로 곱해서 또다른 특성을 만듬.)
변환기 : 특성을 만들거나 전처리하기 위한 다양한 클래스(훈련을 해야 변환이 가능)
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=5,include_bias=False)
# 기본적으로 각특성을 제곱한 항을 추가하고 특성끼리 서로 곱한 항을 추가
poly.fit(train_input)
train_poly = poly.transform(train_input)
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
ss.fit(train_poly)
train_scaled = ss.transform(train_poly)
test_scaled = ss.transform(test_poly)
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Ridge
ss = StandardScaler()
ss.fit(train_poly)
train_scaled = ss.transform(train_poly)
test_scaled = ss.transform(test_poly)
ridge = Ridge()
ridge.fit(train_scaled, train_target)
train_score = []
test_score = []
alpha_list = [0.001, 0.01, 0.1, 1, 10,100]
for alpha in alpha_list:
ridge = Ridge(alpha=alpha)
ridge.fit(train_scaled, train_target)
train_score.append(ridge.score(train_scaled,train_target))
test_score.append(ridge.score(test_scaled,test_target))
ridge = Ridge(alpha=0.1)
ridge.fit(train_scaled, train_target)