훈련 세트와 테스트 세트 나누기
: 판다스 데이터ㅡ레임을 넘파이 배열로 바꾸고 나눔
data=[[]].to_numpy()
target=wine['class'].to_numpy()
사이킷런
: 사이킷런 패키지 사용하려면 각 특성의 리스트를 세로 방향으로 늘어뜨린 2차원 리스트 만들어야 함(zip())
- 2차원 리스트와 정답 데이터 필요
- 평가 : score()
- 사이킷런에서는 numpy배열 사용
- 예측 : predict()
numpy
np.column_stack(([1,2,3],[4,5,6]))
-> array([[1,4],
[2,5],
[3,6]])
distances, indexes = kn.kneighbors() # 가까운 이웃의 거리와 샘플 인덱스 구하기
혼공머신 농어 예측하기
1. knn시도 -> 훈련세트 범위 벗어난 거 예측 제대로 못함
2. 선형 회귀 사용 -> 농어 무게가 음수로 나옴
3. 다항 회귀 사용 (값 제곱하여 2차 방정식으로 훈련)
4. 다중 회귀 (특성 공학 : 여러 개 특성 사용)
from sklearn.preprocessing import PolynomialFeatures
poly=PolynomialFeatures(degree=n,include_bias=False) # n : 고차항 최대 차수, include_bias=False : 절편 항 무시
poly.fit_transform(train_input)
규제
1) 릿지 : 계수 제곱한 값 기준(일반적으로 더 선호)
2) 라쏘 : 계수 절댓값 기준
-> 규제 양 alpha매개변수로 강도 조절 가능
alpha 값 이 작으면 계수 줄어들고 선형회귀와 유사해지므로 과대적합될 가능성 높아짐
분류
.predictproba() : 클래스별 확률값 반환
.classes : 클래스 확인
로지스틱회귀(분류/ 선형 방정식 학습)
from sklearn.linear_model import SGDClassifier
sc=SGDClassifier(loss='log', max_iter=10,tol=None, random_state=42) # tol=None : 일정 에포크동안 성능 향상 x -> 자동으로 멈춤 /향상될 최소값 지정
sc.fit(train_scaled, train_taget)
sc.partial_fit(train_scaled, train_taget) # 모델을 이어서 학습하고 싶을 때 (1 에어포크씩)
cross_validate() 함수
회귀모델 : KFold 분할기 사용
분류모델 : StratifiedKFold 사용
from sklearn.model_selection import cross_validate
from skelarn.tree import DecisionTreeClassifier
dt=DecisionTreeClassifier(random_state=42)
scores=cross_validate(dt,train_input, train_target,cv=StratifiedKFold())
from sklearn.model_selection import GridSearchCV
params={'min_impurity_decrease' : [0.0001,0.0002, 0.0003, 0.0004, 0.0005]}
gs=GridSearchCV(DecisionTreeClassifier(random_state=42), parmas, n_jobs=-1)
gs.best_params_
선형회귀 VS 로지스틱 회귀