[KT AIVLE SCHOOL 7기] - 머신러닝 (4) 최종실습 (feat. 이제 중간 후기를 곁들인....)
이번 시간은 앞서 배운 머신러닝에 대해서 에이블스쿨에서 제공한 실습 자료에서 몇 가지만 진행을 해보려고 합니다!
에이블스쿨의 경우 수업이 끝난 후에 바로 실습 자료에 대한 제공이 더 이루어지기 때문에 수업이 끝난 후에 복습을 할수도 있고 , 사정이 생긴다면 다시 강의를 볼 수 있는 시스템이기 때문에 정말 걱정이 없습니다!! ( 경험담...며칠전 수두에 걸려서 앓느라 이거 덕분에 출석인정도 되고 진도에 따라갈 수 있었어요! )
1. 분류 모델_Decision Tree Classification
- 오늘 다뤄볼 데이터는 꽃잎 데이터인 붓꽃 품종을 예측해보려고 한다
- 당연히 범주형 데이터 이므로 의사결정트리를 이용해서 할 것이다~
데이터 준비 및 이해
# 데이터 읽어오기
path = 'https://raw.githubusercontent.com/Jangrae/csv/master/iris.csv'
data = pd.read_csv(path)
# 상위 몇 개 행 확인
data.head()
# 변수 확인
data.info()
# 기술통계 확인
data.describe()
- 데이터를 이런 머신러닝에 적용할 때에는 "결측치"를 무조건 확인해줘야 된다
- 그 후에는 기술통계를 확인해주면서 분포를 확인하고, 시각화를 위한 작업도 몇 개해준다.
# Target 변수 값 분포 확인
plt.figure(figsize=(8, 5))
sns.countplot(x='Species', data=data)
plt.show()
# Petal.Width --> Species 관계
plt.figure(figsize=(8, 5))
sns.histplot(x='Petal.Width', hue='Species', data=data, bins=30)
plt.show()
- 그리고 countplot을 통해서 종별 갯수를 확인할 수 있다
- 그 후에는 histplot으로 품종별 넓이의 갯수를 보여준다
데이터 준비
- 먼저 데이터를 이해하고, 확인 작업을 거쳤다면, target을 품종으로 잡고, 나머지는 x축에 넣는다
- train_test_split을 통해 train : test = 7 : 3으로 나누어준다
모델링
# 1단계: 불러오기
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
# 2단계: 선언하기
model = DecisionTreeClassifier()
# 3단계: 학습하기
model.fit(x_train, y_train)
# 4단계: 예측하기
y_pred = model.predict(x_test)
# 5단계 평가하기
print(accuracy_score(y_test, y_pred))
- 여기서 분류 모델이므로 의사결정모델을 이용하여 분류하기 위해 모델을 불러와 선언한다
- 학습을 한후에 성능 평가 지표인 정확도를 이용하여 평가하면 0.955555 로 나와 좋은 정확도를 보여준다.
2. 회귀 모델_LinearRegression
이번에는 Happy 데이터를 이용하여 회귀 모델을 적용해서 실습과 평가 까지 해보려고 합니다!!
# 상위 몇 개 행 확인
data.head()
비교적 간단한 데이터이므로 당연히 x = income , y = happiness(target)으로 잡고 데이터를 전처리한 후에 모델을 적용하면 됩니다!
- 이 데이터의 경우는 info()를 통해서 결측치를 확인해준 뒤에 corr(numeric_only = True)를 통해서 상관관계를 나타내줍니다
- 그 후에 시각화를 scatter 를 시켜주면 이쁘게 1차 함수로 그리고 싶게 생기지 않나요??(아니면 됐구..)
- 그 다음에는 똑같이 성능 평가 하는 것이라 크게 다를 것 없어서 해봤어요~
3. KNN
# 데이터 읽어오기
path = 'https://raw.githubusercontent.com/jangrae/csv/master/diabetes.csv'
data = pd.read_csv(path)
# 상위 몇 개 행 확인
data.head()
- 이번에는 피마 인디언 당뇨 데이터셋을 이용해서 이전에 하지 않았던 정규화+가변수화 를 진행하려고 합니다
- 마찬가지로 결측치 info()와 기술통계인 describe() 를 이용하여 간단하게 데이터 이해를 진행합니다.
# 모듈 불러오기
from sklearn.preprocessing import MinMaxScaler
# 정규화
scaler = MinMaxScaler()
scaler.fit(x_train)
x_train = scaler.transform(x_train)
x_test = scaler.transform(x_test)
여기서는 KNN의 경우 각 수치의 거리에 기반한 알고리즘이기 때문에 큰 값보다는 0~1 사이의 값으로 정규화를 해주는 것이 더 효율적이라서 MinMaxScaler를 정의하여 x값을 정규화 진행을 해줍니다!
# 가변수화 대상: 'REPORTED_SATISFACTION, REPORTED_USAGE_LEVEL, CONSIDERING_CHANGE_OF_PLAN
dumm_cols = ['REPORTED_SATISFACTION','REPORTED_USAGE_LEVEL','CONSIDERING_CHANGE_OF_PLAN']
# 가변수화
x = pd.get_dummies(x, columns=dumm_cols, drop_first=True, dtype=int)
# 확인
x.head()
- 여기서 이제 다중 공산성의 문제가 발생합니다! 여기서 가변수화라는 것은 범주형 데이터의 경우 1,0 의 값이라면 당뇨,당뇨x 가 같은 값을 (중복된) 가지기 때문에 이를 방지하기 위해서 drop_first를 통해 하나를 제거해줍니다
confusion matrix와 classification_report를 통해 결과를 보여줍니다!
4. KT AIVLE SCHOOL 간단 후기
벌써 KT AIVLE SCHOOL 7기 AI트랙에 입교하여 배운게 엄청 많네요..! 초반부터 잘 정리해야겠다는 마음가짐을 잘해야겠어요!! 8기 예비 에이블러 분들께 도움이 되는 글이 잠깐(?) 이라도 되도록 후기를 남기려구요!
4-1 하루일과
먼저 09:20 팀즈 미팅을 통해서 캠을 켜고 , 체크인 미팅을 시작합니다! 학교로 치면 아침조회(요즘은 없겠죠?..저는 20세기 출신ㅇ...ㅠ) 입니다!
공지사항이나 전달사항 등등 매니저님께서 여러 유용한 정보들을 알려주시는 시간입니다!
시간 | 내용 |
09:20~09:40 | 체크인 미팅 |
09:40~12:30 | 오전 교육 |
12:30~13:30 | 점심 시간 |
13:30~17:10(16:50) | 오후 교육 |
17:20~17:40 | 체크아웃 미팅 |
4-2 여러 지원제도
kt 에이블스쿨에서는 여러 지원제도가 있습니다! 자격증을 달성하게되면 10만원을 지원해주고, 코딩 마스터스라는 코테가 있는데 AI트랙의 경우에는 JAVA로 시행되기 때문에 여기서 일정 점수를 넘으면 10만원 지급을 해줍니다! 그래서 예비 에이블러 분들 중에 AI트랙 지원 희망하시는 분은 자바 미리 공부하시는 걸 추천합니다!
특히 AICE Association의 경우 무료로 시험 응시가 가능하니 수업만 잘 따라가신다면 샘플 문제를 봐도 이해가 잘 갈거에요~!
4-3 출석 인정 관련
매니저님께서 친절하게 설명 해주시겠지만 항상 일이 생기거나 출석에 영향이 있는 요인은 최소 3일전에 말씀 드리는게 좋아요! 급한 경우는 어쩔 수 없지만 ㅠ
저의 경우 저번주차에 수두에 걸려서(피부과 딱 한번 갔는데 여기서 걸린듯..집돌이인데) 질병확인서를 통해 출석 인정을 받고 , 에이블 스쿨에서 제공해주는 강의와 강의자료를 통해 에이블러님들과 같은 진도를 따라갈 수 있었어요 갓이블 스쿨 ㄷㄷ 안할 이유가 없죠??
4-4 궁금한 점!
궁금하신 사항들이 있으면 댓글 달아주시면 확인하고 알려드리겠습니다! 기자단의 활동은 다 이런 유익한 정보과 체험 후기를 공유하고자 이런 좋은 것들은 하면 좋으니까요!