KT Aivle School 에이블스쿨 기자단] 12.04(월)~ 12.10(일) 빅프로젝트, Aivle Day 2차
Aivle Day 2차 일정
2차 Aivle Day의 경우, 오전에는 희망하는 인원에 한해 코딩 테스트를 진행하였고, 오후에는 다함께 취업 컨설팅 강의를 들었다. 가장 기억에 남는 내용은 자기소개서에 "수치화" 요소를 담으라는 조언이었고, 이 부분과 관련하여 채팅창에 질문을 드렸고, 친절한 답변을 얻을 수 있었다. 또한 "3-step 전략"에 대해서도 강조를 하셨고, 실제 합격 자소서와 불합격 자소서의 사례를 들어서 보여주시니 이해하기 쉬웠고, 나 또한 전략적으로 자소서를 구성할 수 있도록 해야겠다고 마음을 다짐했다.
Aivle Day 선물 - 치킨
내가 평소에 좋아하는 BBQ 치킨을 쿠폰으로 받아서 만족스러웠고, 돈을 추가로 지불하여 "황금올리브 콤보"로 주문했다. 원래는 금요일 Aivle Day 2차 랜선 회식 때 시켜 먹는거였지만, 목요일에 치킨이 너무 간절하여 밤에 주문해서 먹었다.
Aivle Day 선물 - 샴푸, 핸드크림 등
타지 사람이라 빅프 기간 동안에 광주에 고시텔을 잡고, 내려가서 머물게 되었는데 마침 필요했던 샴푸, 로션, 바디워시에 더해 핸드크림까지 받아서 나에게는 더욱 실용적인 선물이었다. 자취를 하게 되면 이러한 물품들을 사는 게 개인적으로 돈이 아깝게 느껴지는데 이를 해결할 수 있었다.
Aivle Day 빙고 ( 주제 : 빅프 KSA )
빅프 때 필요한 KSA ( 지식, 기술, 태도 ) 키워드에 대해 조사를 하였고, 이를 주제로 빙고를 하였다. 나는 "냉철함"을 중요한 요소로 골랐고, 나와는 다른 생각을 하는 에이블러들의 생각을 들으니 흥미로웠다. 나는 비록 상품을 받지 못했지만, 재밌는 경험이었다. 각자 생각이 다른 부분이 있어서 빅프로젝트를 진행하는 동안 다툼없이 진행되려면 생각해야 할 부분이 많다고 느껴졌다.
미니프로젝트 7차 - 제안전략 수립 및 제안서 작성
저번에 진행했던 6차 프로젝트의 주제를 이어서, 이번 미니 프로젝트에서는 구체적으로 고객사의 요구에 맞는 제안서를 작성해보는 시간을 가졌다. 6차 미니프로젝트와 같은 인원들로 구성되었고, 저번 미프에 이어서 조장 역할을 수행했다. 개인적으로 이번 미니 프로젝트에서는 발표를 굉장히 많이 시켜서 조장으로서 지치는 부분이 있었다. 목요일에는 휴가를 사용하여 하루 편하게 쉬었는데, 이번 미니 프로젝트에서 조장으로서 너무 힘들었기에 휴가가 더욱 만족스럽게 느껴졌다.
ㆍ "가치사슬" : 기업에서 경쟁전략을 세우기 위해, 자신의 경쟁적 지위를 파악하고 이를 향상시킬 수 있는 지점 찾기(Reference point)
고객의 추구 가치
ㆍ"기능", "사용", "정서", "경제"
제안서 작성(~금요일)
청자 중심의 보고서 작성 PREP
(1) 강조(Point)
(2) 이유(Reason)
(3) 예시(Example)
(4) 강조(Point)
4 Box Tool
(1) Summary ( 주제 요약 )
(2) Introduction ( 개요 )
(3) Body ( 본문 )
(4) Review ( 요약 )
핵심 차별화 요소
(1) 고객의 중요 니즈
(2) 경쟁사 대비 우위점
이번 주 수업을 통해 느낀 점
이번 주 수업을 통해 느낀 점은 평소에 뉴스를 꾸준히 보고 정리하며, 자신이 관심 있는 분야를 포함하여 다양한 분야의 지식이 중요함을 배웠다. 실습 보고서를 작성하면서 어려웠던 점은 사실 방법보다는 보고서를 작성하고자 하는 분야에 대한 지식 부족이었기 때문에 이러한 생각을 갖게 되었다. 이런 어려움을 다음에 겪지 않도록 하기 위해 티스토리에 비공개 카테고리를 만들어 두고, 개인적으로 꾸준히 기사를 스크랩하고 이에 대한 생각을 정리해두는 습관을 가져야겠다는 목표를 세웠다.
월간 데이콘 - DACON 데이터 분석 아이디어 경진대회 공모전
이번에 DACON에서 진행하는 데이터 분석 아이디어 공모전에 참가하기로 결정했다. 같은 분반 에이블러 2명과 함께 팀을 결성하였다. 공모전 조원을 모집할 때마다, 에이블스쿨 에이블러로서의 편리함을 느끼고 있다.
그동안, 에이블스쿨의 커리큘럼을 정신없게 따라오며 초기에 진행했던 데이터 분석( p-vale 분석 ) 개념이 흐릿해졌었는데 이렇게 공모전을 나가니 복습을 할 수 있어서 좋았다.
유튜브를 통해 데이터 분석가 로드맵에 대해 검색을 해보며, "프로젝트 기반 학습" 방법을 추천해주었는데, 이번 공모전을 통해 이 학습법의 효과를 체감할 수 있었다.
"팀즈"를 이용하니 데이터분석 공모전에 대해 의견을 나누고 파일을 주고 받을 때 편리했다.
지금까지 팀즈를 이용하여 공모전들에 참여했고, 현재는 "백준 문제 풀이 스터디,", "SQL 문제 풀이 스터디"를 리더로서 진행하면서 활용하고 있는데, 게시판을 통해 팀원들에게 공지사항을 알려주고 회의를 시작할 때는 모임 개설 버튼을 통해 간단하게 진행 가능하다는 점이 큰 장점으로 다가왔다.
: 결석 없이 교육에 성실히 참여하실 경우 최대 31.6만원의 지원금을 받으며 공부하실 수 있습니다.
교육비가 무료인데 추가로 지원금도 받을 수 있으니 좋은 기회라고 생각했어요.
현재까지 후기
ㆍ AIVLE School에 참여하면서 좋았던 점 중에서 하나는 스터디원들을 구하기 쉽다는 것입니다.
저는 개인적으로 "백준 문제풀이", "SQL 프로그래머스 문제풀이" 스터디장을 맡아서 매주 스터디를 진행하고 있습니다.
에이블스쿨이라는 기회가 없었다면, 이렇게 좋은 스터디원들을 만나기 힘들었을 거라고 생각하고 있어요.
ㆍ 또한, 공모전에 나가고 싶을 때도 사람들을 모집하기 쉽다는 점 또한 있습니다.
위 사진은 공모전 회의를 할 때 모습입니다. Teams를 통해 자료들을 간편하게 주고 받으니 공모전을 원활하게 할 수 있었어요. 에이블스쿨에서 처음으로 진행했던 공모전이라 기억에 많이 남네요. 이때, 에이블스쿨 수업 중 "데이터 다루기", "데이터 다듬기"에서 배운 내용을 많이 활용하였고 실력을 키울 수 있는 좋은 기회였습니다.
친구 추천 이벤트
지금 Aivle School 5기 친구 추천 이벤트에 참여하시면 커피 쿠폰도 나눠드리고 있으니 참고해주세요!!
import streamlit as st
import altair as alt
import pandas as pd
import plotly.express as px
제목과 subheader를 입력하자
st.title('종합실습')
st.header('_2021 서울교통공사 지하철 월별 하차 인원_')
버튼을 통해 원본 주소를 보여준다.
if st.button('data copyright link'):
st.write('https://www.data.go.kr/data/15044247/fileData.do')
체크박스를 클릭하며 다양한 동작을 수행하자
# 원본 데이터 확인
if st.checkbox('원본 데이터 보기'):
subheader('1. 원본 데이터 - df')
st.dataframe(df)
# 구분 컬럼이 하차인 데이터 선택
# 먼저 구분 컬럼이 하차인 데이터를 선택한다.
df_off = df.loc[df['구분'] =='하차']
# checkbox를 선택하면 데이터프레임이 나오도록 한다.
if st.checkbox('하차 데이터 보기'):
subheader('2. 하차 데이터 - df_off')
st.write(df_off)
# 호선, 시간대별 인원수 보기
# 불필요한 컬럼을 삭제한다.
df_line = df_off.drop(['날짜','연번','역번호','역명','구분','합계'], axis=1)
if st.checkbox('호선, 시간대별 인원수 보기'):
st.subheader('3. 호선, 시간대별 인원수 - df_line')
st.write(df_line)
# Unpivot 데이터 보기
# melt 함수 사용 unpivot: identifier-'호선', unpivot column-'시간', value column-'인원수'
# 새로운 데이터프레임에 저장 & checkbox를 선택하면 데이터프레임이 나타남
df_line_melted = pd.melt(df_line, id_vars = ['호선'], var_name = '시간', value_name = '인원수')
if checkbox('Unpivot 데이터 보기'):
st.subheader('4. 구조 변경 : (Unpivot by melt) 데이터 - df_line_melted')
st.write(df_line_melted)
호선, 시간별 인원수의 합을 확인하자
# '호선','시간' 별 '인원수' 합, as_index=False 저장 & 확인
# 새로운 데이터프레임에 저장 & checkbox를 선택하면 데이터프레임이 나타남
df_line_groupby = df_line_melted.groupby( [ '호선', '시간' ], as_index = False)[ '인원수' ].sum()
if st.checkbox('호선, 시간대별 인원 집계 데이터 보기'):
st.subheader(' 5. 호선, 시간대별 인원 집계 데이터 - df_line_groupby')
st.write(df_line_groupby)
# Unpivot과 호선','시간' 별 '인원수' 합을 수행하면 아래와 같다.
st.subheader('선택한 호선의 시간대별 하차 인원')
# 데이터프레임- df_line_groupby ('호선', '시간대별' 인원 집계 )
# ['호선'] 컬럼에 대해 .unique() 매소드를 사용하여
# selectbox에 호선이 각각 하나만 나타나게 함
option = st.selectbox('호선 선택 (5.df_line_groupby)', df_line_groupby['호선'].unique())
# .loc 함수를 사용하여 선택한 호선 데이터 선별하고
# 새로운 데이터 프레임-에 저장 & 확인
df_selected_line = df_line_groupby.loc[df_line_groupby['호선'] ==option]
st.write(option, ' 데이터 (df_selected_line)', df_selected_line)
st.subheader('선택한 역의 시간대별 하차 인원')
# selectbox를 사용하여 '하차역' 선택
# ['역명'] 컬럼에 대해 .unique() 매소드를 사용하여
# selectbox에 역명이 각각 하나만 나타나게 함
option = st.selectbox('하차역 선택 (2.df_off)', df_off['역명'].unique())
# .loc 함수를 사용하여 선택한 역의 데이터를 선별하고
# 새로운 데이터 프레임에 저장
df_sta = df_off.loc[df_off['역명'] == option]
st.write(option, '하차 데이터 (df_sta)', df_sta)
# 불필요한 컬럼 '연번','호선','역번호','역명','구분','합계' 제외하고 기존 데이터 프레임에 저장
# 참고) df_sta = df_sta[df_sta.columns.difference(['연번', '호선', '역번호', '역명','구분','합계'])]
df_sta_drop = df_sta.drop(['연번', '호선', '역번호', '역명','구분','합계'], axis=1)
st.write('날짜, 시간대별 인원수 (df_sta_drop)', df_sta_drop)
# melt 함수 사용 unpivot: identifier-'날짜', unpivot column-'시간', value column-'인원수'
# 새로운 데이터 프레임-에 저장 & 확인
df_sta_melted = pd.melt(df_sta_drop, id_vars=['날짜'], var_name='시간', value_name='인원수')
st.write('Unpivot (df_sta_melted)', df_sta_melted)
# '시간' 별 '인원수' 집계 , as_index=False
# 새로운 데이터 프레임-에 저장 & 확인
df_sta_groupby = df_sta_melted(['시간'], as_index = False)['인원수'].sum()
st.write(option, ' 집계 데이터 (dfa_sta_groupb)', df_sta_groupby)
altair mark_bar chart + text 그리기 mark_bar()
# 데이터프레임- df_sta_groupby, x-'시간', y-'인원수'
chart = alt.Chart(df_sta_groupby).mark_bar().encode(
x = '시간', y = '인원수').properties(width = 650, height = 350)
text = alt.Chart(df_sta_groupby).mark_text(dx = 0, dy = -10, color = 'black').encode(
x = '시간', y = '인원수', text = alt.Text('인원수:Q', format = ',.0f') )
# format=',.0f' : 천 단위 구분기호+소수점 이하 0
st.altair_chart(chart+text, use_container_width = True)
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()
먼저, 데이터를 학습용과 평가용으로 나누자
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) # 예측을 수행한다.
미프 시작, 언어 지능 2일 & 시각 지능 3일 <- 아쉽게도 예비군으로 언어 지능 2일은 통째로 불참
목요일 미프 내려가는 날
현규님 첫 발표
미프 시작
저번 주에 배운 언어 지능 수업과 시각 지능 수업을 토대로 일주일 동안 미니 프로젝트가 진행된다. 미니 예비군으로 인해 2일 동안 진행하는 언어 지능 미니 프로젝트는 통째로 참가하지 못하는 것이 아쉽다.
위의 파일들을 제외하고 1~3차 프로젝트들도 저렇게 깔끔하게 정리해두었다. 이렇게 정리해둔 것이 빅프로젝트 때 아이디어에 대한 영감을 얻을 때 도움이 될 거라 기대한다. 개인적으로 공부할게 있어서 내가 참여하지 못한 언어지능 프로젝트에 대해 복습을 하지 못했기에 주말을 이용하여 정리할 예정이다.
목요일 미프 내려가는 날
서울에서 광주까지 당일치기를 하기 위해 하루를 4시 20분에 시작했다. KTX 안에서 갈 때 2시간, 올 때 2시간이면 이론상 4시간 수면 확보 가능!
저번에도 왔었지만 다시 오니 감회가 새롭다.
현규님 첫 발표
미프 초창기를 제외하고 우리 권역에서 한동안 발표가 없었는데 목~금으로 현규님이 발표를 해주었고, 높은 수준으로 다른 분반 사람들에게 칭찬을 들었다. 평소 스터디를 진행하시며 꾸준히 노력하셔서 이런 성과를 내신 거라 생각했고 나도 스터디에 참여하겠다는 의사를 전달했다. 다음 미프 때는 내가 발표할 수 있도록 좀 더 노력해야겠다는 자극을 받을 수 있었다.
이번 미프 때 배운 YOLO 학습 모델로 우측으로 갈수록 학습률이 좋으나 구조가 복잡해져 용량이 크고 학습 속도가 느리다는 단점을 갖는다. 현재 가지고 있는 데이터셋을 보고 알맞은 모델을 사용한다면 정확도와 용량, 속도 면에서 모두 좋은 결과가 있을 것이다.
금요일에 진행한 CCTV 영상 속 차량 인식 프로젝트 사진이다. 목요일에 만든 130장의 사진과 추가로 구한 사진을 사용하였고, 처음에 할 때는 잘 진행되지 않았는데 200번의 학습을 돌리니 123번에서 얼리 스탑핑이 되고 인식이 잘 되었다.
KT Aivle School 에이블스쿨 기자단] 10.09(월) ~ 10.15(일) YOLO, Github
내용
시각지능
- YOLO
- ROBOFLOW
GitHub 버전 관리 시작
다음주 목요일 미프 교육장 예약
시각지능
시각지능 미니프로젝트에서 유용하게 사용될 예정인 YOLO 모델
YOLO 모델을 사용함에 있어 사이트를 직접 들어가서 파라미터에 대해 스스로 알아보는 것이 필요함을 배웠다.
RoboFlow
Donwload Dataset을 눌러 코드를 복사한 이후 붙여 넣기를 하여 다음의 코드를 실행한다.
Github 버전 관리 시작
부스트 코스 강의를 통해 Git Hud를 다루는 법을 배웠다. 처음에는 Github를 쓰는 이유가 뭘지 알지 못해서 그렇게 필요한지 몰랐었다. 하지만 강의를 듣고 이제 commit, push, pull을 제대로 활용할줄 알게 되니 따로 파일을 정리해둘 때보다 편리함을 느꼈고 앞으로는 꾸준히 이곳에 업로드를 할 생각이다.
미프 교육장 예약
목요일에는 미니 프로젝트 진행을 위해 교육장을 예약했다. 월~화는 예비군이 잡혀 있기 때문에 선택권이 없고, 남은 요일 중에서는 목요일에 사람들이 많이 몰려서 이 날짜를 선택했다. 왕복 기차표도 예매 완료!