๋ฐ์ดํฐ์ฒญ๋
์บ ํผ์ค ๋ถ์ฐ๋ํ๊ต ํ๋ก์ ํธ
2020๋
07์ ๋ฐ์ํ ์ด๋ ์ 1์งํ์ฐจ๋ ์นจ์์ฌ๊ฑด์ผ๋ก ์ธ๋ช
ํผํด๊ฐ ๋ฐ์ํ์๋ค
์ด์ Data Flood ํ์ ์นจ์๋ฅผ ์์ธกํด๋ณด๊ณ ์ ํ์๋ค.
์์ธก ๋ฐฉ๋ฒ์ ๊ฑฐ์์ ์ผ๋ก ๊ฐ์๋, ์งํ ์ ๋ณด, ํํ ๋ฐ ๋ถํฌ์๋ฉด, ์นจ์ ์ด๋ ฅ์ ํตํด
์บ ํผ์ค ๊ธฐ๊ฐ ๋์ ํ์ตํ ๋จธ์ ๋ฌ๋์ ํตํด ์์ธกํด๋ณด๊ณ ์ ํ์๊ณ
๋ฏธ์์ ์ผ๋ก cctv ์์์ ํ์ต์์ผ ํ์คํ๊ฒ ์ค์๊ฐ์ผ๋ก ์์ธกํ๊ณ ์ ํ์๋ค
๋ ๋ฐฉ๋ฒ์ ์๋ก ์ํธ๋ณด์์ ์ผ๋ก ์นจ์ ์๋ฐฉ์ ๋์์ ์ค ์ ์์ ๊ฒ์ด๋ค.
๋ฐ์ดํฐ ์์ง ๋ฐ ์ ์ฒ๋ฆฌ ๊ณผ์ ๊ณผ ํ์ต ๋ฐฉ๋ฒ ๊ทธ๋ฆฌ๊ณ ์น(django)์ ๋ํด ์ค๋ช
.
์คํ๋ฐฉ๋ฒ์ 7.์คํ๋ฐฉ๋ฒ์ฐธ์กฐ
python 3.7.6 ๊ฐ์ํ๊ฒฝ virtualenv 20.0.31
https://github.com/pcrmcw0486/dataflood
- ๋๋ ํ ๋ฆฌ ์ค๋ช
- ๋ฐ์ดํฐ ์์ง
- ์ ์ฒ๋ฆฌ ๊ณผ์ ๋ฐ ๋ฐ์ดํฐ flow
- Machine Learning
- ์์ Machine Learning
- Django
- ์คํ ๋ฐฉ๋ฒ
โโData : ํ๋ก์ ํธ์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ๋ชจ์
โ โโfinal_data : ์ต์ข
์ ์ผ๋ก ์ฌ์ฉ ์ฉ๋์ ๋ฐ๋ผ์ ์์ฉ๋ ๋ฐ์ดํฐ
โ โ โโDB : for Django
โ โ โโmodel : ์ถํ ๋ชจ๋ธ์ด ํ์ํ ์ ์ฌ์ฉ
โ โ โ โโgeo_model
โ โ โ โโvideo_model
โ โ โโtraining : ํ์ต์ ์ฌ์ฉ ๋ ๋ฐ์ดํฐ
โ โ โโcctv_data : ์์ ํ์ต ์ฉ ๋ฐ์ดํฐ
โ โ โ โโflood
โ โ โ โโflood_clahe
โ โ โ โโno_flood_new
โ โ โ โโno_flood_new_clahe
โ โ โ โโvideo
โ โ โโgeo_data : ๋จธ์ ๋ฌ๋ ํ์ต ์ฉ ๋ฐ์ดํฐ
โ โโprocessing_data : ์ ์ฒ๋ฆฌ ๋๋ฉด์ ๋ง๋ค์ด์ง๋ ๋ฐ์ดํฐ
โ โ โโ1st : 1์ฐจ ๊ฐ๊ณต
โ โ โโ2nd : 2์ฐจ ๊ฐ๊ณต( ์ถํ ํ์ฉ๋์ด final_data ๋๋ training_data๋ก ๋ณ๊ฒฝ)
โ โโrawdata
โ
โโML_model_code : ๋ชจ๋ธ ํ์ต ์ฝ๋
| |
โ โโGeo_Model
โ โ
โ โโVideo_Model
โ
โโProcessing_code : ์ ์ฒ๋ฆฌ ๋ฐ django DB data ์์ฑ์ฉ ์ฝ๋
โ
โโWeb : Django ์ฝ๋
๋ชจ๋ธ ํ์ต์ ํ์ํ ๋ฐ์ดํฐ ์์ง์ ์๋์ ์ฃผ์์์ ๋ค์ด ๋ฐ์ ํธ์์ ์ด๋ฆ์ ๋ณ๊ฒฝํ์ฌ ์ฌ์ฉํ์๋ค. ํด๋น ๋ฐ์ดํฐ๋ค์ Data/raw_data ์ ์ ์ฅํ๋ค.
- ๋ถ์ฐ ์ฝ๋ https://www.code.go.kr/stdcode/regCodeL.do ์ ์ > ๋ถ์ฐ ์กฐํ ํ ๋ค์ด๋ก๋ ๋ฒ์ ๋์ฝ๋ ์กฐํ์๋ฃ.zip โ busan_code_data.xls
-
์นจ์ํ์ ์ ๋ณด : ํํ,ํธ์ฐ,ํด์ผ ๋ฑ์ผ๋ก ์ธํ ์นจ์๋ฐ์์ผ์, ๋ฉด์ ๋ฑ ์นจ์์ง์ญ์ ๋ํ ์ ๋ณด https://www.data.go.kr/data/15048634/fileData.do FL_DATAUPMNG.csv
-
์นจ์ํ์ ์ ๋ณด_๊ธฐ์๋ณ ๊ฐ์ฐ๋ FL_DATAUPMNG์ ์นจ์๋ ์์น์ ๋ฐ๋ฅธ ์นจ์ ๊ธฐ๊ฐ ๋์์ ๊ธฐ์๋ณ ๊ฐ์ฐ๋(์๊ฐ๋ณ) https://www.data.go.kr/data/15048637/fileData.do FL_TIMERAIN.csv
-
๋ถํฌ์๋ฉด ๋น์จ(ํ๊ฒฝ๋ถ)) http://egis.me.go.kr/atlas/view.do?id=64§ion=02&pageNo=13&keyword= ๋ถํฌ์๋ฉด ๋น์จ.xlsx(์ ๊ตญ ๋ฐ์ดํฐ) โ imper_ratio_data.xlsx
-
API_xycode.csv https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15057682 ์ด๋จ๊ธฐ์๋ณด์กฐํ๋ฅผ ์ฌ์ฉ ๊ธฐ์์ฒญ18_๋๋ค์๋ณด ์กฐํ์๋น์ค_์คํAPIํ์ฉ๊ฐ์ด๋_๊ฒฉ์_์๊ฒฝ๋(20200706) โ API_xycode.xlsx
-
simulation_rain.csv ๋ชจ๋ธ ํ์ต ์ดํ ์ด๋ ์ 1์งํ์ฐจ๋ ์นจ์์ฌ๊ฑด ๋น์ผ์ ์นจ์๋ฅผ ์์ธกํ๊ธฐ ์ํด ํด๋น ๋ ์ง์ ๊ฐ์๋ ๋ฐ์ดํฐ๋ฅผ ์์ง ๊ธฐ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ํตํด ์์์
์ ์ฒ๋ฆฌ ๊ณผ์ ๋ฐ ๋ฐ์ดํฐ flow์ ๊ฐ์๋ ๋ค์๊ณผ ๊ฐ๋ค ์์ Raw, Processing Data( 1st, 2nd ) , Final Data( DB, training, model ) ๊ฐ๊ฐ ํ์ผ๋ช ์ด๋ฉฐ ์์ธํ ๋ด์ฉ์ 1์ ์ฐธ์กฐํ๋ค.
์ ์ฒ๋ฆฌ : Processing_code ๋ด๋ถ 1, 2, 3, 4 ์ฐธ์กฐ
ํ์ต์ฝ๋ : ML_model_code > GeoModel > Geo_ML ์ฐธ์กฐ
ใใใใ ใใใใ ใใใใ> VideoModel > video_ML ์ฐธ์กฐ
Django DB์ฉ ์ฝ๋ : Processing_code ๋ด๋ถ for_Django_DB ์ฐธ์กฐ
- โ ๋ถ์ฐ๋ฐ์ดํฐ ์ถ์ถ : ์ ๊ตญ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ FL_DATAUPMNG(์นจ์ํ์ ์ด๋ ฅ) ์์ ๋ถ์ฐ๊ณผ ๊ด๋ จ๋ ์นจ์์ด๋ ฅ์ ์ถ์ถ.
๋ํ ์ด์ ๊ฐ์ด ์ ๊ณต๋๊ณ ์๋ FL_TIMERAIN(์นจ์ ๋น์ผ ์๊ฐ๋น ๊ฐ์๋)์์ ๋ถ์ฐ๊ณผ ๊ด๋ จ๋ ์นจ์์ด๋ ฅ์ ์ถ์ถ
์ด ๋๋ ๊ณผ๊ฑฐ ๋ถ์ฐ ์นจ์์ด๋ ฅ ๋ฐ์ดํฐ์ ์กด์ฌํ๋ ์ฌ๊ฑด๋ฒํธ(SEQ)์ ์ฐ๊ณํ์ฌ ์ถ์ถ
์ด ํ busan_code๋ฅผ ์ฌ์ฉํ๊ธฐ ์ข๋๋ก ์ ์. - โก์นจ์๋ฐ์ดํฐwith ๊ฐ์ ๋ฐ ์งํ : ๋ฝ์๋ธ ๋ถ์ฐ ๊ณผ๊ฑฐ ์นจ์ ์ด๋ ฅ ๋ฐ์ดํฐ๋ก ๋ถํฐ QGIS๋ฅผ ์ด์ฉํ์ฌ ํด๋น ์ง์ญ์ ์ง์ญ์ ๋ณด(๊ณ ๋ ๋ฐ ๊ฒฝ์ฌ๋)๋ฅผ ์์ฑ.
๋ํ ๊ทธ ์ฃผ๋ณ์ ๋น์นจ์ ์ง์ญ ๋ฐ์ดํฐ๋ ๊ฐ์ด ์ด์ฉ
๋ ์ง์ญ์ ๋ณด์ ๊ฐ์๋ ๋ฐ์ดํฐ๋ฅผ ์ง์ญ ์ด๋ฆ์ผ๋ก ๋ฌถ์ด merge ํ ํ ๊ฐ๊ฐ์ ์ง์ญ์ ๋ณด(๊ณ ๋ ๋ฐ ๊ฒฝ์ฌ๋)์ ๋ํด ๊ฐ์ค์น ๋ถ์ฌ - โข์ง์ญ์ ๋ณด(๊ตฌ) : ๋ถ์ฐ ํ์ ๊ตฌ์ญ์ '๊ตฌ' ๋จ์๋ก ๋๋์ด ๊ฐ๊ฐ์ ๊ตฌ์ ํด๋นํ๋ ์ง์ญ์ ๋ณด๋ฅผ ์์ฑํ๊ณ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌ
์ด ๋ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ ๋ถํฌ์๋ฉด ๋น์จ, ๊ตฌ์ ๊ณผ๊ฑฐ ์นจ์ ๋น๋ ๋น์จ, pump ๋น์จ์ ์ด์ฉํ์ฌ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌํ๋ค. - โฃํ์ต์ฉ๋ฐ์ดํฐ๋ง๋ค๊ธฐ : ํ์ต์ ์ฌ์ฉํ๊ธฐ ์ข๋๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ์ฌ ํ์ต์ฉ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ค. (labeling ์์
)
์ฐ์ busan_flood_data์ busan_Uflood_data์ sig_info_weight์ง์ญ์ ๋ณด๋ฅผ ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํฉ์น๋ค.
busan_flood_data๋ก ๋ถํฐ ์นจ์์ฌ ๊ฒฐ์ธก์น๋ฅผ ์ ํ์ ์ผ๋ก ๋ณด์ํ๊ณ busan_Uflood_data์ ์นจ์์ฌ์ 0์ผ๋ก ์ค์ ํ๋ค . ์ดํ ์นจ์์ฌ 0.2m ์ด์์ด ์นจ์์ด๋ฏ๋ก
์นจ์์ฌ์ ๋ฐ๋ผ ๊ฐ๊ฐ์ ๋ฐ์ดํฐ์ FLOOD ์ด์ ์ถ๊ฐํ์ฌ 1, 0์ผ๋ก ๋ผ๋ฒจ๋งํ๋ค.
์ดํ ํ์ต์ ์ํ ๋ฐ์ดํฐ๋ ๋น์จ ๋ฑ์ ๊ณ ๋ คํ์ฌ ์นจ์ ์์ ์ ๊ธฐ์ค busan_flood_data๋ก ๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ๊ณ ,
์ดํ ๊ฐ์ ์๊ฐ๋์์ busan_Ulood_data๋ก ๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ์ฌ training_data๋ฅผ ์์ฑํ๋ค.
๊ฐ๊ฐ ์ฃผํผํฐํ์ผ์ ํตํด ์ ์ฒ๋ฆฌ๊ณผ์ ์์๋๋ก ์งํ๋์ด ํ์ผ์ด ์์ฑ๋๋ฉฐ, (๋จ, QGIS๋ก ์์ฑ๋ busan_flood_geo ์ busan_Uflood_geo, busan_rain_data_mod๋ ์ ์ธ) ๋ง์ง๋ง์ ๋์ฐฉํ
Final data ํด๋์ ์ฌ์ฉ ์ฉ๋์ ๋ฐ๋ผ ์ ์ฅ๋๋ค.
training_data : ๋ชจ๋ธ ํ์ต์ ์ํด ์ฌ์ฉ
DB : ์ดํ Web ํํธ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ํด ์ฌ์ฉ
model : Web๋๋ ์ถํ ์ฌ์ฉ์ ์ํด ๋ชจ๋ธ์ ๋ฐ๋ก ์ ์ฅ
- ๋จผ์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ชจ๋ import ํด์ค
- ๋ถ๋ฅ๋ชจ๋ธ์ด๊ธฐ์ ๋ ๋ฆฝ๋ณ์๋ก ์ฌ์ฉํ ๋ฐ์ดํฐ์ ์ข ์๋ณ์๋ฅผ ๊ตฌ๋ถํด์ ๋๋ ์ค.
- minmaxscaler ๋ฅผ ์ด์ฉํด data๋ฅผ 0~1์ ๊ฐ์ผ๋ก ์ ํ -> ๋ฐ์ดํฐ ํน์ฑ์ ์ด์์น๋ฅผ ์ ๊ฑฐํด์ ์ฌ์ฉํด์๋ ์๋จ
- ์ฃผ์ฑ๋ถ ๋ถ์(PCA)๋ฅผ ํตํด ์ค์ ์ฃผ์ฑ๋ถ(4๊ฐ)๋ฅผ ์ ํ ํ์ต์ ์ฌ์ฉํ๊ธฐ์ํด 4๊ฐ์ ์ฐจ์์ผ๋ก ์ค์ธ ๋ฐ์ดํฐ๋ก ๋ณํ
- ๋ฐ์ดํฐ๋ฅผ train ๊ณผ test ๋ก ๊ตฌ๋ถ 8 : 2 ๋น์จ๋ก ๋๋ ์ค
- bayesianoptimization ์ ์ด์ฉํด ์ฌ์ฉํ ๋ชจ๋ธ๋ค์ ์ต์ ๊ฐ์ ํ์ํจ -> ์ฌ์ฉ๋ ๋ชจ๋ธ KNN, SVM, DT, RF ๊ฐ ๋ชจ๋ธ๋ค์ ์ฌ์ฉ๋๋ ์ต์ ์ ์ต์ ์กฐํฉ์ ํ์
- ์ฐพ์๋ธ ์ต์ ์ ์กฐํฉ์ผ๋ก ๋ชจ๋ธ์ ๋ง๋ค๊ณ voting ์์๋ธ์ ํตํด ๊ทธ ๋ชจ๋ธ๋ค์ ๋ฌถ์ด์ ์ฌ์ฉํจ -> voting ์์๋ธ์ ๊ฒฝ์ฐ soft ์ต์ ์ ์ฌ์ฉํจ ๊ฐ ๋ชจ๋ธ๋ค์์ ๋์ค๋ 1์ผ ํ๋ฅ ๊ณผ 0์ผ ํ๋ฅ ์ ์ข ํฉํด์ ๊ฒฐ๊ณผ๋ฅผ ๋ -> ํ ๋ชจ๋ธ์ ์ ํ๋๊ฐ ๋จ์ด์ ธ๋ ๋ค๋ฅธ ๋ชจ๋ธ๋ค๊ณผ์ ํ๋ฅ ๊ณ์ฐ์ ํตํด ๊ฒฐ๊ณผ๋ฅผ ๋์ถํจ
- ๋ฐ์ดํฐ๋ฅผ ํ์ตํ๊ณ ๊ต์ฐจ๊ฒ์ฆ์ ๋ค์ ํ๋ฒ ์ค์ํ์ฌ ๊ฐ ๋ชจ๋ธ๋ค์ ์ฑ๋ฅ์ ํ๊ฐํจ -> f1_score ๋ฅผ ํ์ธ
- ๊ต์ฐจ๊ฒ์ฆ์ ํตํด ๋์จ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ธฐ ์ฝ๊ฒ ํ๊ธฐ์ํด boxplot ์ผ๋ก ์๊ฐํํจ
- ์์์ ๊ตฌ๋ถํ test ๋ฐ์ดํฐ์ ๋ํ ์์ธก ์ ํ๋๋ฅผ ํ์ธํจ -> 0.7์ ๋๋ก train ๋ฐ์ดํฐ์ ์ ์ฌํ๊ฒ ๋์ด
- ์ค์ ์ฌ๊ณ ์ฌ๋ก๋ฅผ ์์ธกํ ์ ์๋์ง ํ์ธํ๊ธฐ ์ํด ์ด๋๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํจ -> ์ ์ฒ๋ฆฌ ๊ณผ์ ์์ ์ฌ์ฉํ ๊ฐ์ค์น๋ฅผ ์ด๋๋ ๋ฐ์ดํฐ์๋ ์ ์ฉ
์ดํ ๋ถํ์ํ ๋ณ์๋ค ์ ๊ฑฐ ํ pca๋ก ํ์ต๋ฐ์ดํฐ์ ๊ฐ์ ํํ๋ก ๋ณํ -> ์์ธก ์ค์ ๊ฒฐ๊ณผ -> 10์๋ฅผ ์นจ์๋ก ์์ธกํจ
- ์์ ํ์ผ์ ํ๋ ์ ๋จ์๋ก ๋ถํ ํ์ฌ ์์ ๋ฐ์ดํฐ๋ก ๋ณํ
- ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ import
- ์์ ์ด๋ฏธ์ง๋ฅผ ์ฝ์ด์์ ์นจ์ ์ด๋ฏธ์ง, ๋น์นจ์ ์ด๋ฏธ์ง๋ก ๋ฆฌ์คํธ ์์ฑ
- ๊ฐ๊ฐ์ ์๋ณธ ์ด๋ฏธ์ง๋ค์ CLAHE์ฒ๋ฆฌ๋ฅผ ํตํด ํ์ ์ ์ฒ๋ฆฌ๋ ์ด๋ฏธ์ง๋ก ๋ณํํ ์ ์ฅ
- CLAHE ์ด๋ฏธ์ง๋ฅผ ์ฝ์ด์ด
- ์์ ํ์ต์ ์ํด ImageDataGenerator๋ฅผ ์ด์ฉํ์ฌ ํ์ต,๊ฒ์ฆ ๋ฐ์ดํฐ์ ์์ฑ
- ์ ์ดํ์ต์ ์ํด ๊ธฐ์กด MobileNetV2๋ฅผ ๋ถ๋ฌ์ค๊ณ , ์ด์ง ๋ถ๋ฅ๋ฅผ ์ํ Dense์ธต ๋ ธ๋ ์ ๋ณํ
- ํ์ต ๋ชจ๋ธ์ ์์ฑํ์ฌ first_try.h5 ํ์ผ๋ก ์ ์ฅ
- ํ์ธํ๊ณ ์ถ์ ์์์ ์ ๋ ฅ๋ฐ๊ณ opencv์ ์ฐจ๋ ๋ถ๋ฅ ๋ชจ๋ธ์ธ cars.xmml์ ์ ๋ ฅ๋ฐ์.
- ์ ๋ ฅ๋ฐ์ ์์์ ํ๋ ์์ ํ์ต ๋ชจ๋ธ์ ํฌ์ ํ์ฌ ๊ฒฐ๊ณผ์น๋ฅผ ์์์ ํ ์คํธ๋ก ๋ฎ์ด์์
- ์์ ๋ ์์ ํ๋ ์์ ๊ณง๋ฐ๋ก ๋ณด์ฌ์ฃผ๊ฑฐ๋, ์ ์ฅํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์์
- Framework : Django
- sqlite3
- ์ง๋ ์๊ฐํ
- ๊ฐ ์์น๋ณ ์ง๋์ ํ์
- ๋ถ์ฐ์ง์ญ ๊ตฌ๋จ์ ์ ๋ณดํ์ด์ง์์ ๋ถํฌ์๋ฉด ๋น์จ & ์นจ์๋น๋ ๋ง๋๊ทธ๋ํ ํํ
ex)pd.read_sql_query("SELECT * FROM ํ ์ด๋ธ๋ช ", db)
- URL : ./busanmap/
- busanmap/map.py > busan_gu_info :๋ถ์ฐ์ง์ญ ๊ตฌ๋จ์ ์ ๋ณด ํ์ด์ง ๋ถ์ฐ ๊ฐ ๊ตฌ๋ณ ๋ถํฌ์๋ฉด, ํํ, ์นจ์๋น๋๋ฅผ ๊ทธ๋ํ์ ์ง๋์ ํ์
- ๋ถ์ฐ ๊ฐ ๊ตฌ๋ณ ํต๊ณ (๋ถํฌ์๋ฉด ๋น์จ, ์นจ์๋น๋) ๋ง๋๊ทธ๋ํ - chart.js ์ฌ์ฉ
- ๊ตฌ๋ณ ์ง๋ & ๋ถํฌ์๋ฉด ๋น์จ, ์นจ์๋น๋๋ณ ์ง๋ ์๊ฐํ - d3.js ์ฌ์ฉ
- URL : ./busanmap/model/
- busanmap/map.py > simulation_result : ๋ถ์ฐ์ง์ญ์์ ์นจ์ ์ฌ๊ณ ๊ฐ ์๋ 7์ 23-24์ผ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ์ฌ ๊ทธ ์๊ฐ๋์ ์นจ์์ํ๋๋ฅผ simulation
- 2020๋ 7์ 23 - 24์ผ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ์ฌ ์์ธก๋ชจ๋ธ ์๋ฎฌ๋ ์ด์
- URL : ./busanmap/cctv/
- busanmap/views.py > cctv : cctv ํ์
- ์นจ์๋์๋ CCTV๋ฅผ ํตํด ์นจ์์์ธก๋ชจ๋ธ ํ์ธ
- URL : ./busanmap/apitest/
- busanmap/map.py > apitest : ์ค์๊ฐ ์นจ์ ์ํ๋ ๋ณด๊ธฐ ํ์ด์ง ์ค์๊ฐ์ผ๋ก ๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์จ ๋ค ํ์ฌ์๊ฐ, +1, 2, 3์๊ฐ ํ์ ๊ฐ ๋๋ณ ์นจ์ ์์ธก
- ๊ธฐ์์ฒญ api๋ฅผ ์ด์ฉํ์ฌ ์ค์๊ฐ์ผ๋ก ํ์ฌ ๋ ์จ๋ฅผ ๊ฐ์ ธ์จ ๋ค ํ์ฌ, +1, +2, +3 ์นจ์์์ ๋ถํฌ ํ์
python 3.7.6์ผ๋ก ๋์๊ฐ๋ ๊ฐ์ํ๊ฒฝ์ ๊ตฌ์ถํ์ฌ ์ฌ์ฉํ๋ค.
๊ฐ์ํ๊ฒฝ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฟ ์กด์ฌํ๋ virtualenv์ conda๋ฅผ ์ด์ฉํ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค
conda ํ๊ฒฝ์ ์ถ์ฒํ๋ค.
( ๊ฐ์ํ๊ฒฝ ๋ด์ ํ์ํ ํ๊ฒฝ ๊ตฌ์ถ )
1. ์์
ํ ํด๋ ์์ฑ ๋ฐ ํด๋๋ก ์ด๋(ํด๋๋ช
project)
C:/.... > mkdir project
C:/.... > cd project
# git clone(ํ๋ก์ ํธ ํ์ผ์ ๊ฐ์ ธ์จ๋ค.), ํด๋น ํ๋ก์ ํธ ํด๋๋ก ์ด๋
C:/..../project > git clone https://github.com/pcrmcw0486/dataflood.git
C:/..../project > cd dataflood
2. ๊ฐ์ํ๊ฒฝ ์ค์น - python virtualenv ์ฌ์ฉ ๋๋ conda ๊ฐ์ํ๊ฒฝ ๋ ์ค ํ๋ ์ฌ์ฉ
โ python virtualenv ์ฌ์ฉ
# virtualenv๊ฐ ๊น๋ ค ์์ง ์์ ๊ฒฝ์ฐ
C:/..../project/dataflood> pip install virtualenv
# ๊ฐ์ํ๊ฒฝ venv ์์ฑ (python version 3.7.6 ์ ๋ง์ถ์ด์ผํจ.) => (tesnsorflow๋ฅผ ์คํํ๊ธฐ ์ํด)
C:/..../project/dataflood> virtualenv --python=python3.7.6 venv
# ๊ฐ์ํ๊ฒฝ ํ์ฑํ (in Windows)
C:/..../dataflood/dataflood> venv\Scripts\activate
(venv) C:/..../project/dataflood>
โก conda ๊ฐ์ํ๊ฒฝ
(venv) C:/..../project/dataflood>
# ๊ฐ์ํ๊ฒฝ venv ์์ฑ (python version 3.7.6 ์ ๋ง์ถ์ด์ผํจ.) => (tesnsorflow๋ฅผ ์คํํ๊ธฐ ์ํด)
C:/..../project/dataflood> conda create -n venv python=3.7.6
...
...
Proceed ([y]/n)? y
# ๊ฐ์ํ๊ฒฝ ํ์ฑํ
C:/..../project/dataflood> conda activate venv
3. ๊ฐ์ํ๊ฒฝ ๋ด์ requirements.txt ์ค์น ( ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๋ชจ์๋์ ๋ฐ์ดํฐ )
๋ค์๊ณผ ๊ฐ์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ requirements๋ฅผ ํ๋ฒ์ ์ค์น ๊ฐ๋ฅ
(venv) C:/..../project/dataflood> pip install -r requirements.txt
4. ํํ์ด์ง ํ์ธ
# Web ํด๋๋ก ์ด๋ ํ django runserver
(venv) C:/..../project/dataflood> cd Web
(venv) C:/..../project/dataflood/Web> python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
September 18, 2020 - 16:19:18
Django version 3.0.3, using settings 'Web.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
5. ctrl + c๋ก django ์๋ฒ ์ข
๋ฃ ํ ์ ์ฒ๋ฆฌ ์ฝ๋ ๋ฐ ML ์ฝ๋๋ณด๊ธฐ
(venv) C:/..../project/dataflood/Web> cd ..
(venv) C:/..../project/dataflood> jupyter lab ๋๋ jupyter notebook
URL : http://127.0.0.1:8000/
๊ฐ ํ์ด์ง ๋ณ๋ก ์ง๋ ์์ ์๋ circle์ ํด๋ฆญํจ์ผ๋ก์จ ํด๋น ์ ๋ณด๋ฅผ ์ง๋์ ํ์
- ๋ถ์ฐ์ง์ญ ๊ตฌ๋จ์ ์ ๋ณด : ์ผ์ชฝ์ ์๋ ๋ง๋ ๊ทธ๋ํ ์์ ๊ฐ ์ ๋ณด๋ฅผ ํด๋ฆญํ ๋ ๊ทธ์ ๊ดํ ๋ด์ฉ์ ๋ง๋๊ทธ๋ํ๋ก ํ์
์ง๋์์ circle์ ๋๋ฅด๋ฉด ๊ฐ๊ฐ ๋ถํฌ์๋ฉด, ํํ๋น, ์นจ์๋น๋๋ฅผ ์ง๋์์ ํ์.
- Simulation ๊ฒฐ๊ณผ ๋ณด๊ธฐ : ์นจ์ํผํด๊ฐ ์ผ์ด๋ฌ๋ 2020๋
7์ 23์ผ-24์ผ 3์๊น์ง์ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ์ฌ ๋ชจ๋ธ ์๋ฎฌ๋ ์ด์
๊ฒฐ๊ณผ๋ฅผ ์ถ์ถ,
๊ฐ ์๊ฐ์ด ํ์๋ circle์ ๋๋ ์ ๋, ๊ทธ ์๊ฐ์ ์นจ์ ์์ ์ง์ญ์ ์ง๋์ ํ์
- ์ค์๊ฐ ์นจ์ ์ํ๋ ๋ณด๊ธฐ : ์ค์๊ฐ api๋ฅผ ์ด์ฉํ์ฌ, ํ์ฌ ๊ฐ์ฐ๋์ ๋ฐ์์์ ๋ชจ๋ธ์ ์ฝ์ ํ์ฌ ํ์ฌ, +1, +2, +3 ์๊ฐ ๋ค์ ์นจ์ ์์ ์ง์ญ์ ์ง๋์ ํ์


