<aside> 💡 1번 10 점 2번 10 점 3번 10 점 4번 10 점 5번 10 점 ⇒ total : 50점

</aside>

이론 문제 # 1.

정답 : 3, 5

3 : 엔트로피 불순도도 클수록 분류하기 좋지 않음

5 : 특성 중요도가 낮다고 해서 그 특성이 유용하지 않다는 것은 아님 ⇒ 트리가 그 특성을 선택하지 않았거나, 다른 특성이 동일한 정보를 지니고 있기 때문


이론 문제 # 2.

정답 : 3, 4

3 : 트리의 랜덤성이 클수록, 계산 속도가 빨라짐

4 : 각 트리의 정확도, 독립성이 높을수록 random forest의 성능이 높아짐


실습 문제 # 3.

import pandas as pd

fish = pd.read_csv('<https://bit.ly/fish_csv_data>')

fish_input = fish[['Weight','Length','Diagonal','Height','Width']].to_numpy()
fish_target = fish['Species'].to_numpy()

#data split
from sklearn.model_selection import train_test_split

train_input, test_input, train_target, test_target = train_test_split(
    fish_input, fish_target, random_state=42)

#preprocessing
from sklearn.preprocessing import StandardScaler

ss = StandardScaler()
ss.fit(train_input)
train_scaled = ss.transform(train_input)
test_scaled = ss.transform(test_input)

#LR
from sklearn.linear_model import LogisticRegression

lr = LogisticRegression(C=20, max_iter=1000)
lr.fit(train_scaled, train_target)

print('GridSearchCV 적용 전')
print('train score :',lr.score(train_scaled, train_target))
print('test score :',lr.score(test_scaled, test_target))
print('C = 20')

1.png

#GridSearchCV
from sklearn.model_selection import GridSearchCV
params = {'C' : [i for i in range(1, 30)]}
gs = GridSearchCV(LogisticRegression(max_iter=1000), params, n_jobs=-1)
gs.fit(train_scaled, train_target)
dt = gs.best_estimator_

print('GridSearchCV 적용 후')
print('train score :',dt.score(train_scaled,train_target))
print('test score :',dt.score(test_scaled,test_target))
print('C =',gs.best_params_['C'])

1.png

*** C의 범위가 커질수록 ⇒ C의 값이 커지고, 훈련 세트에 과대적합됨