Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.77 KB | None | 0 0
  1. # Pre&Post Processors
  2. KDN-Minerva 프로젝트에서 전처리 및 후처리는 효율성과 검증성을 고려하여 Pandas를 사용하여 개발하였습니다. 모든 프로세서는 Argument를 받아 동작하여 -h 옵션을 입력하여 상세 도움말을 보는게 가능합니다.
  3. 모든 전후처리 프로세서는 CSV파일을 기반으로 동작함을 전제합니다. JSON, Avro 등 다른 형식의 파일들은 전혀 호환되지 않음을 명심하세요.
  4.  
  5. ## Discretization(이산화)
  6. ### 개요
  7. 이산화의 의미는 도메인별로 다른 의미로 쓰이지만 여기서는 데이터마이닝 관점에서의 이산화(연속형 변수를 범주형으로 변화)를 기술합니다. 이산화 방법은 여러가지가 있지만 여기서는 심플하게 Equal-width 이산화 방법을 사용합니다.
  8.  
  9. ### 실행 결과
  10. - Input Data
  11. ```
  12. id,employee_id,user_type,username,password,score
  13. 1,,SUPER ADMIN,admin,admin,60
  14. 2,1,NORMAL,robin,robin,70
  15. 3,2,ADMIN,taylor,taylor,80
  16. 4,3,ADMIN,vivian,vivian,10
  17. 5,4,NORMAL,harry,harry,30
  18. 6,7,ADMIN,melinda,melinda,50
  19. 7,8,NORMAL,harley,harley,40
  20. ```
  21. - Command
  22. ```python discretization.py --sep="," --column="score"```
  23.  
  24. - Output Data
  25. ```
  26. lower,upper,count
  27. 66.0, 80.0,2
  28. 38.0, 52.0,2
  29. 52.0, 66.0,1
  30. 24.0, 38.0,1
  31. 9.93, 24.0,1
  32. ```
  33.  
  34. ## Encoding(인코딩)
  35. ### 개요
  36. 인코딩을 위한 전처리 프로세서입니다. 별다른 설명이 필요없으므로 -h 옵션을 통해 help문서를 참조하세요
  37.  
  38. ## Indexing(인덱싱)
  39. ### 개요
  40. 전체 컬럼들중 선택된 몇개의 컬럼들만으로 구성된 레코드들을 가지고 옵니다.
  41.  
  42. ### 실행 결과
  43. - Input Data
  44. ```
  45. id,employee_id,user_type,username,password,score
  46. 1,,SUPER ADMIN,admin,admin,60
  47. 2,1,NORMAL,robin,robin,70
  48. 3,2,ADMIN,taylor,taylor,80
  49. 4,3,ADMIN,vivian,vivian,10
  50. 5,4,NORMAL,harry,harry,30
  51. 6,7,ADMIN,melinda,melinda,50
  52. 7,8,NORMAL,harley,harley,40
  53. ```
  54.  
  55. - Command
  56. ```python indexing.py --sep="," --columns="id,username"```
  57.  
  58. - Output Data
  59. ```
  60. id,username
  61. 1,admin
  62. 2,robin
  63. 3,taylor
  64. 4,vivian
  65. 5,harry
  66. 6,melinda
  67. 7,harley
  68. ```
  69.  
  70. ## Normalization(정규화)
  71. ### 개요
  72. 데이터를 0~1 사이의 값으로 변환시켜주는 프로세서입니다. 정규화 방법은 Min-Max Normalization 방법을 사용하며 정규화된 값은 ```(X - X의 최소값) / (X의 최대값 - X의 최소값)``` 을 사용하게 됩니다.
  73.  
  74. ### 실행 결과
  75. - Input Data
  76. ```
  77. id,employee_id,user_type,username,password,score
  78. 1,,SUPER ADMIN,admin,admin,60
  79. 2,1,NORMAL,robin,robin,70
  80. 3,2,ADMIN,taylor,taylor,80
  81. 4,3,ADMIN,vivian,vivian,10
  82. 5,4,NORMAL,harry,harry,30
  83. 6,7,ADMIN,melinda,melinda,50
  84. 7,8,NORMAL,harley,harley,40
  85. ```
  86.  
  87. - Command
  88. ```python normalization.py --sep="," --columns="score"```
  89.  
  90. - Output Data
  91. ```
  92. id,employee_id,user_type,username,password,score
  93. 1,,SUPER ADMIN,admin,admin,0.7142857142857143
  94. 2,1.0,NORMAL,robin,robin,0.8571428571428571
  95. 3,2.0,ADMIN,taylor,taylor,1.0
  96. 4,3.0,ADMIN,vivian,vivian,0.0
  97. 5,4.0,NORMAL,harry,harry,0.2857142857142857
  98. 6,7.0,ADMIN,melinda,melinda,0.5714285714285714
  99. 7,8.0,NORMAL,harley,harley,0.42857142857142855
  100. ```
  101.  
  102. ## Remove Duplicates(중복제거)
  103. ### 개요
  104. 데이터에서 중복된 레코드를 제거하게 됩니다. 중복이 되는 기준이 되는 컬럼을 지정할 수 있습니다.
  105.  
  106. ### 실행 결과
  107. - Input Data
  108. ```
  109. id,employee_id,user_type,username,password,score
  110. 1,,SUPER ADMIN,admin,admin,60
  111. 2,1,NORMAL,robin,robin,70
  112. 3,2,ADMIN,taylor,taylor,80
  113. 4,3,ADMIN,vivian,vivian,10
  114. 5,4,NORMAL,harry,harry,30
  115. 6,7,ADMIN,melinda,melinda,50
  116. 7,8,NORMAL,harley,harley,40
  117. ```
  118.  
  119. - Command
  120. ```python remove_duplicates.py --sep="," --subset="user_type"```
  121.  
  122. - Output Data
  123. ```
  124. id,employee_id,user_type,username,password,score
  125. 1,,SUPER ADMIN,admin,admin,60
  126. 2,1,NORMAL,robin,robin,70
  127. 3,2,ADMIN,taylor,taylor,80
  128. ```
  129.  
  130.  
  131. ## Sampling(표본 추출)
  132. ### 개요
  133. 데이터에서 샘플레코드들을 뽑아내기 위해 사용됩니다.
  134.  
  135. ### 실행 결과
  136. - Input Data
  137. ```
  138. id,employee_id,user_type,username,password,score
  139. 1,,SUPER ADMIN,admin,admin,60
  140. 2,1,NORMAL,robin,robin,70
  141. 3,2,ADMIN,taylor,taylor,80
  142. 4,3,ADMIN,vivian,vivian,10
  143. 5,4,NORMAL,harry,harry,30
  144. 6,7,ADMIN,melinda,melinda,50
  145. 7,8,NORMAL,harley,harley,40
  146. ```
  147.  
  148. - Command
  149. ```python sampling.py --n=3 --sep=","```
  150.  
  151. - Output Data
  152. ```
  153. id,employee_id,user_type,username,password,score
  154. 4,3,ADMIN,vivian,vivian,10
  155. 1,,SUPER ADMIN,admin,admin,60
  156. 3,2,ADMIN,taylor,taylor,80
  157. ```
  158.  
  159. ## Smoothing(평활화)
  160. ### 개요
  161. 데이터가 가지고 있는 노이즈를 제거하기 위해 사용됩니다. 주로 시계열 데이터에 적합합니다. 평활화에는 다양한 방법이 연구되어 사용되고 있지만 본 프로세서는 심플하게 Moving-Average Smoothing만을 수행합니다.
  162.  
  163. ### 실행 결과
  164. - Input Data
  165. ```
  166. 기준일자,지역,발전소,발전량(KWh)
  167. 2016-01-01 00:00:00,일산,수원환경사업소태양광,2370
  168. 2016-01-01 00:00:00,당진,당진자재창고태양광,1320
  169. 2016-01-01 00:00:00,호남,황금물류센터태양광,3476
  170. 2016-01-01 00:00:00,호남,광양항태양광,4116
  171. 2016-01-01 00:00:00,울산,울산태양광,1772
  172. 2016-01-01 00:00:00,당진,당진매립장태양광,1791
  173. 2016-01-01 00:00:00,동해,동해태양광,2321
  174. 2016-01-01 00:00:00,당진,당진취수로태양광,1809
  175. 2016-01-01 00:00:00,당진,당진태양광,1477
  176. 2016-01-02 00:00:00,당진,당진태양광,1685
  177. 2016-01-02 00:00:00,당진,당진취수로태양광,1917
  178. 2016-01-02 00:00:00,당진,당진자재창고태양광,1446
  179. 2016-01-02 00:00:00,동해,동해태양광,2198
  180. 2016-01-02 00:00:00,일산,수원환경사업소태양광,2885
  181. 2016-01-02 00:00:00,울산,울산태양광,973
  182. 2016-01-02 00:00:00,당진,당진매립장태양광,1818
  183. 2016-01-02 00:00:00,호남,황금물류센터태양광,2030
  184. ```
  185.  
  186. - Command
  187. ```python smoothing.py --sep="," --time_column="기준일자" --columns="발전량(KWh)"```
  188.  
  189. - Output Data
  190. ```
  191. 기준일자,발전량(KWh)
  192. 2016-01-01 00:00:00,
  193. 2016-01-01 00:00:00,
  194. 2016-01-01 00:00:00,
  195. 2016-01-01 00:00:00,
  196. 2016-01-01 00:00:00,2610.8
  197. 2016-01-01 00:00:00,2495.0
  198. 2016-01-01 00:00:00,2695.2
  199. 2016-01-01 00:00:00,2361.8
  200. 2016-01-01 00:00:00,1834.0
  201. 2016-01-02 00:00:00,1816.6
  202. 2016-01-02 00:00:00,1841.8
  203. 2016-01-02 00:00:00,1666.8
  204. 2016-01-02 00:00:00,1744.6
  205. 2016-01-02 00:00:00,2026.2
  206. 2016-01-02 00:00:00,1883.8
  207. 2016-01-02 00:00:00,1864.0
  208. 2016-01-02 00:00:00,1980.8
  209. ```
  210.  
  211. ## Standardization(표준화)
  212. ### 개요
  213. 기존 변수에 범위를 정규 분포로 변환할 경우 사용됩니다. 표준화된 값은 ```(X - X의평균값) / (X의 표준편차)``` 을 사용하게 됩니다.
  214.  
  215. ### 실행 결과
  216. - Input Data
  217. ```
  218. id,employee_id,user_type,username,password,score
  219. 1,,SUPER ADMIN,admin,admin,60
  220. 2,1,NORMAL,robin,robin,70
  221. 3,2,ADMIN,taylor,taylor,80
  222. 4,3,ADMIN,vivian,vivian,10
  223. 5,4,NORMAL,harry,harry,30
  224. 6,7,ADMIN,melinda,melinda,50
  225. 7,8,NORMAL,harley,harley,40
  226. ```
  227.  
  228. - Command
  229. ```python standardization.py --sep="," --columns="score"```
  230.  
  231. - Output Data
  232. ```
  233. id,employee_id,user_type,username,password,score
  234. 1,,SUPER ADMIN,admin,admin,0.47415646781615983
  235. 2,1.0,NORMAL,robin,robin,0.8890433771552996
  236. 3,2.0,ADMIN,taylor,taylor,1.3039302864944393
  237. 4,3.0,ADMIN,vivian,vivian,-1.600278078879539
  238. 5,4.0,NORMAL,harry,harry,-0.7705042602012595
  239. 6,7.0,ADMIN,melinda,melinda,0.05926955847702005
  240. 7,8.0,NORMAL,harley,harley,-0.3556173508621197
  241. ```
  242.  
  243. ## Treat Anomaly(이상값 처리)
  244. ### 개요
  245. 상한임계치와 하한임계치를 설정하여 그 이상에 해당하는 값을 제거합니다.
  246.  
  247. ### 실행 결과
  248. - Input Data
  249. ```
  250. id,employee_id,user_type,username,password,score
  251. 1,,SUPER ADMIN,admin,admin,60
  252. 2,1,NORMAL,robin,robin,70
  253. 3,2,ADMIN,taylor,taylor,80
  254. 4,3,ADMIN,vivian,vivian,10
  255. 5,4,NORMAL,harry,harry,30
  256. 6,7,ADMIN,melinda,melinda,50
  257. 7,8,NORMAL,harley,harley,40
  258. ```
  259.  
  260. - Command
  261. ```python treat_anomaly.py --sep="," --columns="score" --uppers=70 --lowers=30```
  262.  
  263. - Output Data
  264. ```
  265. id,employee_id,user_type,username,password,score
  266. 1,,SUPER ADMIN,admin,admin,60
  267. 2,1.0,NORMAL,robin,robin,
  268. 3,2.0,ADMIN,taylor,taylor,
  269. 4,3.0,ADMIN,vivian,vivian,
  270. 5,4.0,NORMAL,harry,harry,
  271. 6,7.0,ADMIN,melinda,melinda,50
  272. 7,8.0,NORMAL,harley,harley,40
  273. ```
  274.  
  275. ## Treat Missing Value(결측값 처리)
  276. ### 개요
  277. 결측치를 처리하는 프로세서입니다.
  278.  
  279. ### 실행 결과
  280. - Input Data
  281. ```
  282. id,employee_id,user_type,username,password,score
  283. 1,,SUPER ADMIN,admin,admin,60
  284. 2,1,NORMAL,robin,robin,70
  285. 3,2,ADMIN,taylor,taylor,80
  286. 4,3,ADMIN,vivian,vivian,10
  287. 5,4,NORMAL,harry,harry,30
  288. 6,7,ADMIN,melinda,melinda,50
  289. 7,8,NORMAL,harley,harley,40
  290. ```
  291.  
  292. - Command
  293. ```python treat_missing_val.py --sep="," --fill="NaN"```
  294.  
  295. - Output Data
  296. ```
  297. id,employee_id,user_type,username,password,score
  298. 1,NaN,SUPER ADMIN,admin,admin,60
  299. 2,1.0,NORMAL,robin,robin,70
  300. 3,2.0,ADMIN,taylor,taylor,80
  301. 4,3.0,ADMIN,vivian,vivian,10
  302. 5,4.0,NORMAL,harry,harry,30
  303. 6,7.0,ADMIN,melinda,melinda,50
  304. 7,8.0,NORMAL,harley,harley,40
  305. ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement