출처: https://astrocosmos.tistory.com/202 [ASTROCOSMOS:티스토리] 'Aivle School 4기' 카테고리의 글 목록 (2 Page) :: 하나둘셋넷
728x90

DX 의 중요성

 나이키와 포드를 예시로 성공적인 DX를 이루어내는 데에 중요한 요인을 배울 수 있었다.
 나이키는 고객 중심으로 서비스를 기획하며 코로나 시기에도 높은 실적을 기록했다.
 포드는 기술 성장을 위해 많은 돈을 들여 다양한 스타트업을 인수하고 "포드 스마트 모빌리티"를 설립했다.
 하지만, 각 사업부가 독립적으로 일이 진행되면서 기술과 업무가 통합되지 않았고다. 이에 따라 포드 스마트 모빌리티는 기계의 변속기 이상, 안정성 등의 문제가 반복되는 모습을 보여주었다.
 

클라우드 이론 및 AWS 경험

 
 수업 때 클라우드 이론을 배운 뒤, AWS를 통해 실습을 진행하며 VPC, Subnet, 인터넷 게이트웨이, 보안그룹 등을 다루어 보니 클라우드 개념에 대한 이해도를 높이는 데에 도움이 되었다.
 수업에서 받은 계정은 금요일 수업 종료와 동시에 삭제되어 아쉬움이 있었고, AWS 홈페이지를 뒤져보며 무료로 연습을 해볼 방법이 있는지 알아보고 있다.
 

 

돌아오는 주에는 6차 미니 프로젝트 진행

 돌아오는 주 3일 동안은 미니 프로젝트를 진행하게되었다.
 현재까지 미프를 진행해온 결과, 여러 번 같은 조가 된 에이블러들을 볼 수 있었다.
 현재 우리 조 상황은 조원들이 온다면 수요일에 많이 올 것으로 예상되고, 나도 상황을 보면서 대면 교육장을 갈지 결정하려고 한다.

 

SQL 스터디원 모집

 
회사 채용 공고들을 보면서 느낀 결과, SQL은 많은 직무에서 우대 받을 수 있는 역량임을 볼 수 있었고, DX 과정에서는 SQL 수업을 따로 진행하지 않기 때문에 이를 꾸준히 공부하고자 직접 스터디원들을 모집했다.
 

 
 하고 싶은 일이 생겼을 때는 망설이지 않는 스타일이기에 바로 KT 에이블러들 단체 카톡방에 말을 했고, DX 에이블러 스터티그룹원 모집 게시판에도 글을 올렸다.
 이 부분에 비슷한 고민이 있는 사람들이 있어서였는지 생각보다 빠르게 스터디원들을 구하고 마감할 수 있었다.
 

 

스터디에서 활용할 프로그래머스 SQL 고득점 Kit

 

728x90
728x90

KT Aivle School 에이블스쿨 기자단] 11.06(월)~ 11.12(일) Virtual Box, Cacoo

내용

  • 월요일 오전 외출, 오후에 빡세게 따라잡기
  • Virtual Box 설치
  • Cacoo 실습

월요일 오전 외출, 오후에 빡세게 따라잡기

처음으로 외출을 해봤다

 
병원 예약으로 인해 월요일 오전부터 외출을 했다. 새롭게 배우는 IT 인프라 과목의 첫 시간을 빠지고 시작하여 어려움을 겪었지만, 다행히도 1:1 문의에서 친절한 안내를 받아서 오후에 진도를 빠르게 따라잡을 수 있었다.
 

packet tracer로 ping을 통한 연결을 하고 확인하는 과정이다.

 
 

Virtual Box 설치

가상환경에서 ubuntu를 실행하기 위하여 먼저 Virtual Box를 설치하였다.

KT에서 제공받은 LG 그램을 쓰면 설치된 그대로 사용할 수 있어 편리하지만, 직접 설치할 줄 아는게 중요하다고 생각하여 나는 직접 내 노트북에 설치하여 실습을 진행했다.

Virtual Box라고 구글에 치면 어렵지 않게 설치 사이트를 찾을 수 있다. 실습에는 7.0.8 버전을 다룬다.

 Cacoo 실습 

cacoo 서비스를 이용하면, 무료로 간단하게 그림을 그려보고 공유하고, 이를 이미지로 다운받아서 볼 수 있다.

팀원들과 서비스 제안에 대해 의견을 교류할 때 유용할 수 있을 거라 생각한다.

728x90
728x90

KT Aivle School 에이블스쿨 기자단] 10.30(월)~ 11.05(일) 미프, 에이블데이, 기자단 발표

이번주 미프 훈남들

 

저번 미프에서는 현규님이 멋있게 보였고, 이번 미프에서는 민성님, 현빈님이 멋있다고 느껴졌다.
 

안정적인 발표를 보여준 민성님

월요일 발표 직후 반응

 
발표도 발표지만 마지막 저 멘트가 기억에 남았다.
 

높은 응용력을 보여준 현빈님

 
나는 주어진 과제 따라서 지도 정도까지 그리니까 시간이 끝났는데, Naver API 사용해서 지도까지 그린 걸 보고 대단하다고 생각을 했었다. 기회가 된다면 많이 배워보고 싶네요.

기자단 발표

 


처음에 매니저님한테 메세지를 받았을 때는 DX가 모두 있는 Zoom에서 화면 공유하고 발표하는 알았다. 사람들이 많은 곳에서 발표하면서 그릇을 키워볼까 그냥 가만히 있을까 고민을 했는데, 다시 확인을 해보니 우리반에서 진행하는 걸 알게됐고 이정도면 할만하지 생각하고 하겠다고 말씀을 드렸다.

로젠택배 알림이 떠서 최근에 주문한게 없는데 뭘까..? 생각이 들었었다. 읽어보니 발송인이 AIVEL School로 써있었고 선물은 텀블러였다. 소소하게 기분이 좋았고, 나중에 이 텀블러로 커피를 마신다면 인증 사진을 올려야겠다.

728x90
728x90

 

(1) y 값을 0,1,2로 변환하기

data['Species'] = data['Species'].map({'setosa':0, 'versicolor':1, 'virginica':2})
data.head()

 

(1) 모델 설계

data['Species'] = data['Species'].map({'setosa':0, 'versicolor':1, 'virginica':2})
data.head()target = 'Species'
x = data.drop(target, axis = 1)
y = data.loc[:, target]

x_train, x_val, y_train, y_val = train_test_split(x, y, test_size = .3, random_state = 20)

nfeatures = x_train.shape[1] #num of columns
nfeatures

# 메모리 정리
clear_session()

# Sequential 
model = Sequential( Dense( 3 , input_shape = (nfeatures,), activation = 'softmax') )

# 모델요약
model.summary()

 

 

(2) compile + 학습

model.compile(optimizer=Adam(learning_rate=0.1), loss= 'sparse_categorical_crossentropy')

history = model.fit(x_train, y_train, epochs = 50,
                    validation_split=0.2).history

 

(3) 예측 및 검증

pred = model.predict(x_val)
pred[:5]

# 5개 행만 살펴보면
np.argmax(pred[:5], axis = 1)

# 전체에 적용해서 변환합시다.
pred_1 = pred.argmax(axis=1)
pred_1

y_val

print(confusion_matrix(y_val, pred_1))
print(classification_report(y_val, pred_1))

 

 

 

모델 저장 및 사용

## DNN
## 1) 불러오기

from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.backend import clear_session
from sklearn.metrics import accuracy_score

# 메모리 정리
clear_session()

## 2) 선언하기
nfeatures = train_x.shape[1] #num of columns
model_DNN = Sequential()

# 스케일링
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
train_x = scaler.fit_transform(train_x)
test_x =scaler.transform(test_x)

# 입력 레이어
model_DNN.add(Dense(8, activation='relu'))
# model_DNN.add(Dropout(0.5)) # Dropout은 신경망에서 뉴런의 일부를 무작위로 비활성화하여 과적합을 방지

#은닉 레이어
model_DNN.add(Dense(6, activation='relu'))
# model_DNN.add(Dropout(0.3))

# 출력 레이어
model_DNN.add(Dense(4,input_shape = (nfeatures,) ,activation='softmax'))

## target값 라벨링하기 {'뇌경색':0, '뇌출혈':1, '복부손상':2, '심근경색':3}

labeling = {'뇌경색':0, '뇌출혈':1, '복부손상':2, '심근경색':3}

train_y_1 = train_y.replace(labeling)
test_y_1 = test_y.replace(labeling)
## 3) 학습하기

model_DNN.compile(optimizer='adam', loss = 'sparse_categorical_crossentropy', metrics=['accuracy'])
history = model_DNN.fit(train_x,train_y_1, epochs = 1000, validation_split = 0.2).history

## 4) 예측하기
pred_DNN =  model_DNN.predict(test_x)

## 5) 평가하기, np.argmax(pred_DNN, axis=1)

pred_DNN = np.argmax(pred_DNN, axis=1)

print(accuracy_score(test_y_1, pred_DNN))

## 모델 저장하기

#머신러닝 모델인 경우
import joblib
joblib.dump(model_XGC, '119_model_XGC.pkl')

#딥러닝 모델인 경우
model_DNN.save('119_model_DNN.keras')

# 모델 불러오기

# 머신러닝 모델인 경우

# import joblib
# model_m = 

# 딥러닝 모델인 경우

from keras.models import load_model
model_d = load_model('119_model_DNN.keras')

 

728x90
728x90

KT Aivle School 에이블스쿨 중간점검] 데이터전처리, 불필요한 부분 제거, 결측치 대체, 중앙값, 최빈값

진행단계

  • 먼저 필요한 라이브러리들을 불러오자 - 데이터 전처리, 시각화
  • 데이터를 불러오고 데이터를 확인하자
  • 불필요한 부분을 제거하자
  • 데이터 결측치를 처리하자 - 최빈값으로 대체하자
  • 데이터 결측치를 처리하자 - 중앙값으로 대체하자

 

먼저 필요한 라이브러리들을 불러오자 - 데이터 전처리, 시각화

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

%matplotlib inline의 역할은 이와 같다.

 

데이터를 불러오고 데이터를 확인하자

df = pd.read_csv('voc_data.csv')   # csv 파일을 읽어오자                         
df.head()  # 앞부분 5줄을 출력하자                                                                  
df.tail()  # 뒷부분 5줄을 출력하자                                                                      
df.info()  # 데이터의 정보를 종합적으로 확인하자
df.info()     
df.index() # 데이터프레임의 인덱스 확인

df.columns # 데이터프레임 컬럼을 확인                                                               
df.values  # 데이터프레임 값을 확인

df['voc_trt_perd_itg_cd'].value_counts()  # voc_trt_perd_itg_cd 컬럼 데이터별 건수를 나열         
df['voc_trt_perd_itg_cd'].value_counts(normalize = True)

#  voc_trt_perd_itg_cd 컬럼 데이터별 건수 비율 보기

 

불필요한 부분을 제거하자

df1 = df.drop(columns=['voc_trt_perd_itg_cd', 'voc_trt_reslt_itg_cd', 'oos_cause_type_itg_cd', 'engt_cperd_type_itg_cd',
                                      'engt_tgt_div_itg_cd', 'fclt_oos_yn'], axis=1)

# 불필요한 컬럼 삭제
# DataFrame drop() 함수 사용
# 컬럼 삭제한 결과를 "df1" 데이터프레임에 저장한다.
# 다중 컬럼 삭제

df1.drop(columns = ['voc_mis_pbls_yn'], inplace = True) # 단일 컬럼 삭제

df.drop(columns = ['new_date','opn_nfl_chg_date', 'cont_fns_pam_date'], inplace =True)

# 다중 컬럼 삭제

 

데이터 결측치를 처리하자 - 최빈값으로 대체하자

df1.replace('_', np.nan, inplace = True) # 모든 컬럼에 대하여 '_' 값을 null로 변경한다.
df1.isnull().sum() # 변경이 잘 되었는지 확인한다.

최빈값이 L로 확인된다.

df1['cust_class_itg_cd'].value_counts()  # 최빈값을 찾자
df1['cust_class_itg_cd'].fillna('L', inplace = True)  # 최빈값 'L'로 결측치를 대체하자
df1['cust_class_itg_cd'].isnull().sum()  # 잘 대체되었는지 Null 값을 확인하자
df1.info()

 

데이터 결측치를 처리하자 - 중앙값으로 대체하자

df1['age_itg_cd'].median() # 중앙값을 확인하자

df1['age_itg_cd'].replace(np.nan, 위에서 계산한 중앙값, inplace = True)

# 위에서 나온 중앙값으로 Null 값을 대체하자.

df1['age_itg_cd'].dtypes # 데이터 타입을 확인하자

df1['age_itg_cd'] = df1['age_itg_cd'].astype(int) # 값을 정수형으로 변환하자

df1['age_itg_cd'].isnull().sum() # Null 값 개수를 확인하자

df1.info() # age_itg_cd가 "int32" 타입인지 확인하자
728x90
728x90

내용

  • 먼저 필요 라이브러리들을 불러오자
  • 디렉토리에 학습할 파일이 잘 위치하고 있는지 확인하자
  • 데이터를 필요한 형태로 가공하자
  • 데이터의 정보를 파악하자
  • 타겟 데이터에 대해 파악하자
  • 데이터를 시각화하여 분석하자
  • Random Forest 알고리즘을 사용하여 모델링을 실시하자
  • 먼저, 데이터를 학습용과 평가용으로 나누자
  • 모델을 선언, 학습, 예측을 수행하자
  • 성능을 평가하자

먼저 필요 라이브러리들을 불러오자

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
 
from sklearn.ensemble import RandomForestClassifier # Random Forest 불러오기
from skelarn.model_selection import train_test_split # 데이터를 나누기 위해 불러온다
from sklearn.metrics import * # 모델 성능 평가를 위해 불러온다.

 

디렉토리에 학습할 파일이 잘 위치하고 있는지 확인하자

import os
os.getcwd() # 현재 디렉토리 위치 확인
os.listdir() # 현재 디렉토리의 폴더와 파일 출력
os.listdir('./data') # 특정 폴더 열어보기

 

데이터를 읽고, 필요한 형태로 가공하자

data = pd.read_csv('./data/train_data.csv') # data 변수에 train_data.csv 파일을 불러와서 할당한다.
data.drop('subject', axis =1, inplace = True ) # 불필요한 열을 제거하자

 

데이터의 정보를 파악하자

data.shape() # data 데이터프레임의 행, 열 개수
data.head(5) # 상위 5개 행을 확인
data.tail(3) # 하위 3개 행을 확인
data.columns # 데이터프레임의 컬럼명 확인
data.info() # 데이터프레임의 기초 정보(컬럼명, 데이터 개수, 데이터 타입) 확인
data.info(verbose = True, null_couns = True)
# verbose = True로 하면 모든 열에 대한 정보를 출력, null_counts = True를 하면 각 열에서 null 값의 수를 출력
data.describe() # 데이터프레임의 수치형 데이터 기초통계 정보 확인

 

타겟 데이터에 대해 파악하자

data['Activity].values # 고유값(범주) 확인
data['Activity].value_counts() # 고유값 별 개수 확인
data['Activity'].value_counts() / data['Activity'].value_counts().sum() # 고유값 비율 = 개별 범주의 수 / 전체 범주의 수
 
sns.countplot( data=data, x = 'Activity') # seaborn의 countplot을 통해 타겟 데이터를 시각화하여 분석하자
plt.xticks(rotation=90)
plt.grid()
plt.show()

countplot을 통해 범주별 개수를 시각화하였다.

먼저, 데이터를 학습용과 평가용으로 나누자

y = data['Activity']
x = data.drop('Activity', axis = 1) # target으로 사용할 Activity 컬럼을 제거하자
x_train, x_val, y_train, y_val = train_test_split(x, y, test_size = 0.3, random_state = 2023)


 

모델을 선언, 학습, 예측을 수행하자

rf_model = RandomForestClassifier(random_state=2023) # 모델을 선언한다.
rf_model.fit(x_train, y_train) # 모델을 학습한다.
rf_pred = rf_model.predict(x_val) # 예측을 수행한다.

 

성능을 평가하자

print('accuracy_score', accuracy_score(y_val, rf_pred))
print('\nconfusion_matrix: \n', confusion_matrix(y_val, rf_pred))
print('\nclassification_report: \n', classification_report(y_val, rf_pred))

세 가지 예측을 수행하면 이러한 결과를 확인할 수 있다.

728x90
728x90

KT Aivle School 에이블스쿨 기자단] 10.23(월) ~ 10.29(일) streamlit, 상담 메일

내용

  • 에이블스쿨 강사님의 상담 퀄리티
  • Streamlit

에이블스쿨 강사님의 상담 퀄리티

 

자세한 내용은 다루기 어렵지만 데이터 분석, 딥러닝 수업을 해주신 000 강사님께 진로 관련하여 상담 메일을 드렸었다. 주말 11시에 이 정도 길이로 답변이 돌아올 거라고는 예상을 못해서 더욱 큰 감동이었다.

 

Streamlit 다루기

 

시각화 도구로 사용할 Streamlit

 월요일 수업으로는 시각화 도구로 사용할 Streamlit에 대해 배웠다.

 터미널을 통해 코드를 실행하고 다루는 방식이라 아직 터미널 환경에 낯선 에이블러들이 고생하는 모습을 볼 수 있었다.

Jupyter Lab에서 터미널을 통한 Streamlit 조작
수업 직후 올라오른 답안 파일

Jupyter 환경에서의 데이터 전처리, Colab에서의 인공지능 다루기와는 또 다르게 느껴져 연습이 필요할 거라 생각하여 수업이 끝난 직후 올라온 실습답안 파일을 보며 다시 복습을 했다.

 

꾸준한 GitHub 관리

GitHub를 쓰면 쓸수록 편리성을 느끼고 있어, 꾸준히 Commit하고 Push하는 습관을 가지게 되었다.이러한 작업은 꼼꼼하게 정리하는 걸 좋아하는 나의 성향과 잘 맞는다고 느끼고 있다.

 

Shap_value를 통한 상승 요인, 하강 요인 찾기

 

위의 그래프에서 빨간색 부분이 상승 요인, 파란색 부분이 하강 요인에 해당한다.

이진 분류에 대한 실행 결과이며 1에 대한 예측을 목표로 했다. 위의 그래프는 0.96으로 1일 확률이 높고, 아래의 그래프는 0.32로 1이 될 확률이 낮다.

 

변수별 중요도들 barplot으로 그려보자

위의 barplot에서 가장 중요도가 높은 값이 lstat이고 target 값은 medv 이므로 x축에 lstat을 넣고, y축에 medv를 넣어 scatter plot을 그리고 분포에서 벗어난 값을 고른다.

728x90
728x90

KT Aivle School 에이블스쿨 기자단] 10.23(월) ~ 10.29(일) streamlit, 상담 메일

내용

  • 미프 시작, 언어 지능 2일 & 시각 지능 3일 <- 아쉽게도 예비군으로 언어 지능 2일은 통째로 불참
  • 목요일 미프 내려가는 날
  • 현규님 첫 발표

미프 시작

 저번 주에 배운 언어 지능 수업과 시각 지능 수업을 토대로 일주일 동안 미니 프로젝트가 진행된다.
 미니 예비군으로 인해 2일 동안 진행하는 언어 지능 미니 프로젝트는 통째로 참가하지 못하는 것이 아쉽다.
 

꾸준히 쌓여가는 미프 자료들

 위의 파일들을 제외하고 1~3차 프로젝트들도 저렇게 깔끔하게 정리해두었다. 이렇게 정리해둔 것이 빅프로젝트 때 아이디어에 대한 영감을 얻을 때 도움이 될 거라 기대한다. 개인적으로 공부할게 있어서 내가 참여하지 못한 언어지능 프로젝트에 대해 복습을 하지 못했기에 주말을 이용하여 정리할 예정이다.


목요일 미프 내려가는 날

서울에서 광주까지 당일치기를 하기 위해 하루를 4시 20분에 시작했다. KTX 안에서 갈 때 2시간, 올 때 2시간이면 이론상 4시간 수면 확보 가능!


오랜만에 온 교육장

저번에도 왔었지만 다시 오니 감회가 새롭다.
 

현규님 첫 발표

 미프 초창기를 제외하고 우리 권역에서 한동안 발표가 없었는데 목~금으로 현규님이 발표를 해주었고, 높은 수준으로 다른 분반 사람들에게 칭찬을 들었다. 평소 스터디를 진행하시며 꾸준히 노력하셔서 이런 성과를 내신 거라 생각했고 나도 스터디에 참여하겠다는 의사를 전달했다. 다음 미프 때는 내가 발표할 수 있도록 좀 더 노력해야겠다는 자극을 받을 수 있었다.

YOLOv5 학습 모델

 이번 미프 때 배운 YOLO 학습 모델로 우측으로 갈수록 학습률이 좋으나 구조가 복잡해져 용량이 크고 학습 속도가 느리다는 단점을 갖는다. 현재 가지고 있는 데이터셋을 보고 알맞은 모델을 사용한다면 정확도와 용량, 속도 면에서 모두 좋은 결과가 있을 것이다.

금요일에 진행한 CCTV 영상 속 차량 인식 프로젝트 사진이다. 목요일에 만든 130장의 사진과 추가로 구한 사진을 사용하였고, 처음에 할 때는 잘 진행되지 않았는데 200번의 학습을 돌리니 123번에서 얼리 스탑핑이 되고 인식이 잘 되었다.

728x90
728x90

KT Aivle School 에이블스쿨 기자단] 10.09(월) ~ 10.15(일) YOLO, Github

 

내용

  • 시각지능
  • - YOLO
  • - ROBOFLOW
  • GitHub 버전 관리 시작
  • 다음주 목요일 미프 교육장 예약

시각지능

 

시각지능 미니프로젝트에서 유용하게 사용될 예정인 YOLO 모델

실습 교안 중에서 SlowStart 파일로 자세한 설명을 들었다.

 YOLO 모델을 사용함에 있어 사이트를 직접 들어가서 파라미터에 대해 스스로 알아보는 것이 필요함을 배웠다.
 

RoboFlow

 

Donwload Dataset을 눌러 코드를 복사한 이후 붙여 넣기를 하여 다음의 코드를 실행한다.

 

 

Github 버전 관리 시작

 

부스트 코스 강의를 통해 Git Hud를 다루는 법을 배웠다.
처음에는 Github를 쓰는 이유가 뭘지 알지 못해서 그렇게 필요한지 몰랐었다.
하지만 강의를 듣고 이제 commit, push, pull을 제대로 활용할줄 알게 되니 따로 파일을 정리해둘 때보다 편리함을 느꼈고 앞으로는 꾸준히 이곳에 업로드를 할 생각이다.

 

어떤 분이 나를 팔로잉 해주었다



미프 교육장 예약

 

 

 목요일에는 미니 프로젝트 진행을 위해 교육장을 예약했다.
 월~화는 예비군이 잡혀 있기 때문에 선택권이 없고, 남은 요일 중에서는 목요일에 사람들이 많이 몰려서 이 날짜를 선택했다. 왕복 기차표도 예매 완료!

프로젝트 당일날 내려가버리는 빡센 스케줄

 

728x90

+ Recent posts