반응형

  이야기를 시작 하며  

  나는 원래  대한민국 대기업에서 이야기하는 공무(工務: Maintenance) 부서에 20년 이상 종사한 사람이다.   직접적으로  정비 업무를 하지 않았만,  간접적으로 공무기획, 운영를 매우 오랬동안 하였다.   과거 5년 전만 해도,  특히 중공업 분야에서는 신뢰성 공학에 대한 인식이 없었다. 주로 현장 위주의 TBM(Total Productive Maintenace) 전원 참여 생산보전으로 진행 되어 있고 현재 진행 형이다.   

  

    특히나,  비정형적인 공정을 가지고 있는 조선산업의 경우는 특히 더욱 그러했다.  그리고  나는  입사 후 필드에서 직접적으로 관리하는  필드 관리자가 아니였기 때문에, 특히나 더욱 모르고 있었다.

 

  하지만,  3년 전 부터,  나는 공무기획/운영 관리자에서 벗어나서 필드관리자로 업무를 바꾸었다.   그 이후  실무를 보기 시작 하였고,   조선 공정에서도 적게 나마,    라인 공정이 있다는 것을 알았다.   라인 공정이라고 하지만,   라인에 내려오는 블럭(Block)은  비정형 블럭 이였다.   그 만큼 분석에 있어서 쉽지 않을 뿐 아니라,  다양한 케이스를 적용하여 만한다. 

 

   아래의 서적과  사내 강의 내용을 주로 인용하여 기록 하겠다. 

    -  기계계열 신뢰성 공학 기초 [GS 인터비전]

    -  R for Data Science , [Hadley Wickham]

    - 쉽게 배우는 R 텍스트 마이닝 [이지 퍼블리싱]

    - Applied Predictive Modeling [에이콘]

    - 실무 위주의 R [위키독스]

    - 사내 강의 내용 

    - 프로젝트 하면서 주로 다룬 경험 적내용

    

 

최근에 있어서 회사에 큰 변화가 있었다.  사내에서는 미래 인재 양성 프로젝트가 시작 되었다.  나도 그 프로젝트에 참여 되었고,  교육기관(카이스트)로 부터 교육도 받았다.   하지만,  교육기관으로 부터 받은 교육은 주로 딥러닝 계열의 파이썬 이다.   

 

 물론 그때,  머신러닝, 딥러닝을 전체 아우르는 교육을 약 6개월에 걸쳐서 배웠다.  물론 그때 배운 이미지 프로세싱을 통해 사내에서 큰 혁신을 이룬 것도 있다.  하지만,  여기에는 그런 내용을 기록 하지는 않는다.  

 

아래의 블로그를 통해서 기록한다. 

   

https://rdmkyg.blogspot.com/

 

오늘도 데이터

   IPTIME 공유기를 쓰면,  WOL 기능이 있다.   공유기 관리 툴에도 있고,  휴대폰에도 있다.  어찌 되었든 우분투가 있는 PC가 개인 서버용으로 사용하기 때문에,  일단 컴퓨터를 켜기 어려운 장

rdmkyg.blogspot.com

 

 

내용에 대한 구성 

 

    1. 용어정리 

        - 신뢰성 공학과 관련된 용여정리 

        - 통계와 확률 변수에 대한 용정리  

   

   2.  통계 패키지 R 설치 

      -  Windows R 설치  

      - Ubuntu 환경에서의 R 설치 

 

   3. 통계 지식 

      -통계와 확률  및 확률 분포

     - 표분 분포와 관련된 주요 확률 분포와 추정과 검정

     - 회귀 분석

     - 분산 분석 

     - 극치 분포 (지수 분포, 와이블 분포)

 

  4. 데이터 Manipulation

    - dplyr

    - stringr

    - ggplot2

  

실무에서 가장 많이 쓰였던 사례를 중심으로 하겠다.  그리고,  모든 사항에 대한 이론과 설명을 넣었고, 그것에 대한 응용문제를 넣어서 다른 사람들이 잘 알 수 있게 정리 하겠다. 

반응형
반응형

   str_split은  문자열과 패턴을  벡터화 하는 것으로,  문장에 있는 단어를 벡터 형태로 분리 하는 것이고,  str_replace는 특정 문자열과 패턴을 바꾸어 주는 기능 이며,  gsub는 특정 문자열과 패턴을 바꾸어 주는 기능으로써, str_replace와 기능은 거의 같다.  국내에서 일반적으로 용어를 나용할때,  문자열 나누기라고 한다. 

   아래의 내용은  현업 실무에서  어려운 문제에 봉착 했을 때,  푸는 문제이다.  즉 아래의 내역을 보고,  몇 톤인지 규격을 뽑아 내는 것을 응용하는 것인데,  형태소 분석기에서는 아래와 같은 기능을 지원 하지 않는다.   

 

1. 실전 문제  

오늘 풀어야 하는 과제,  아래에 어지럽게 널려 있는 문자 중에서  TON을 골라서 내시오. 

         "OVER HEAD CRANE(MAGNET) 25TON (C-512)",

         "MAGNET CRANE(SEMI) 2.8TON C-522",

         "25TON BLOCK LOADER (PBS 5BAY)",

         "2TON(3DS 뒷편 법면쪽)",

         "LIFTING MAGPOT DEVICE(2.5TON"

 그럼 위의 문자열에서  25TON,  2.8TON, 2TON을 각각 추출하여,  정리하고자 할 때,  어떻게  해야 할까?

    아래의 패키지를 사용 할것이다. 

      stringr :   문자열은 크게 눈에 띄는 구성은 아니지만,   데이터 정리 및 준비 작업에서  큰  역할을 한다.   이것은 해들리 위컴이  가능한 쉽게 문자열 작업을 할 수 있도록 설계된  것이다. 

     오늘은  str_split,  str_replace을 사용 할 것이다. 

  이것을 하면서,  정규화 표현식도 같이 정리 할 것이다. 

 

2. 데이터의 입력 

   데이터는 벡터 형태로 입력 한다.   향후 데이터 프레임을 만들어도 벡터를 묶어서 만들기 때문에 데이터 프레임 응용 할 때도 많이 쓰인다. 

 

library(stringr)

sentence <- c("OVER HEAD CRANE(MAGNET) 25TON (C-512)",
              "MAGNET CRANE(SEMI) 2.8TON C-522",
              "25TON BLOCK LOADER (PBS 5BAY)",
              "2TON(3DS 뒷편 법면쪽)",
              "LIFTING MAGPOT DEVICE(2.5TON)"
)

 

3. str_split 벡터화 실행

  문자열 패턴만 가지고 벡터화를 실행 하였을 경우에는 우리가 원하는 답이 나오지 않는다. 즉 TON 별로 데이터가 나누어지지 않는다. 

# TON을 데이터 정규화 표현식을 안하였을 경우    
mat<-  str_split(sentence, " ", simplify = TRUE )
mat
##      [,1]       [,2]          [,3]             [,4]    [,5]     
## [1,] "OVER"     "HEAD"        "CRANE(MAGNET)"  "25TON" "(C-512)"
## [2,] "MAGNET"   "CRANE(SEMI)" "2.8TON"         "C-522" ""       
## [3,] "25TON"    "BLOCK"       "LOADER"         "(PBS"  "5BAY)"  
## [4,] "2TON(3DS" "뒷편"        "법면쪽)"        ""      ""       
## [5,] "LIFTING"  "MAGPOT"      "DEVICE(2.5TON)" ""      ""

 

 여기에서 옵션 simplify =TRUE 하면 데이터 형태가 매트릭스로 바뀌고,  FALSE 로 하면 list 형태로 반환된다. 

 

4. 데이터 정규화 표현식 이용 특수문자 제거 

gsub를 이용하여, 특수문자 괄호를 제거하니,   데이터를 분리 할 수 있는 형태로 바뀌었다.  

 

# 정규화 표현식을 사용하여 특수문자를 제거한 경우 
sentence1  <- gsub("\\)", " ", sentence)
sentence1  <- gsub("\\(", " ", sentence1)
sentence1
## [1] "OVER HEAD CRANE MAGNET  25TON  C-512 "
## [2] "MAGNET CRANE SEMI  2.8TON C-522"      
## [3] "25TON BLOCK LOADER  PBS 5BAY "        
## [4] "2TON 3DS 뒷편 법면쪽 "                
## [5] "LIFTING MAGPOT DEVICE 2.5TON "

str_replace를 이용하여, 특수문자 괄호를 제거하여 보았다.  물론 앞에 것과 같은 결과가 나왔다. 

 

sentence1 <-  str_replace(sentence, "\\)", "")
sentence1 <-  str_replace(sentence1, "\\(", "")
sentence1
## [1] "OVER HEAD CRANEMAGNET 25TON (C-512)" "MAGNET CRANESEMI 2.8TON C-522"      
## [3] "25TON BLOCK LOADER PBS 5BAY"         "2TON3DS 뒷편 법면쪽"                
## [5] "LIFTING MAGPOT DEVICE2.5TON"

 

둘중에 어느것이 좋은지는 각자 판단 하는 것이 좋겠지만,  나는  코딩의 의 일관성을 위하여 str_replace() 함수를 사용할 것이다. 

 

5.  데이터 정규화 이후 벡터화 시행

   아래와 같이 TON이  정확하게 분리가 되었다. 

 

mat<-  str_split(sentence1, " ", simplify = TRUE )
mat
##      [,1]      [,2]     [,3]     [,4]     [,5]     [,6]    [,7] [,8]    [,9]
## [1,] "OVER"    "HEAD"   "CRANE"  "MAGNET" ""       "25TON" ""   "C-512" ""  
## [2,] "MAGNET"  "CRANE"  "SEMI"   ""       "2.8TON" "C-522" ""   ""      ""  
## [3,] "25TON"   "BLOCK"  "LOADER" ""       "PBS"    "5BAY"  ""   ""      ""  
## [4,] "2TON"    "3DS"    "뒷편"   "법면쪽" ""       ""      ""   ""      ""  
## [5,] "LIFTING" "MAGPOT" "DEVICE" "2.5TON" ""       ""      ""   ""      ""

6. 최종 정리  

  위의 내용을 함수로 만들어 정리 해 보겠다.   물론 gsub보다는 str_split로 정리 하겠다. 사용자 함수를 만들면 아주 간단하고,  재 사용 할 수 있다. 

 

library(stringr)

sentence <- c("OVER HEAD CRANE(MAGNET) 25TON (C-512)",
              "MAGNET CRANE(SEMI) 2.8TON C-522",
              "25TON BLOCK LOADER (PBS 5BAY)",
              "2TON(3DS 뒷편 법면쪽)",
              "LIFTING MAGPOT DEVICE(2.5TON)"
)   

# 사용자 함수 정리
vector_split_fun <- function(x){
  
  sentence1 <-  str_replace(x, "\\)", "")
  sentence1 <-  str_replace(sentence1, "\\(", "")
  
  mat <-str_split(sentence1, " ", simplify = TRUE )
  
  return(mat)
   
}

# 사용자 함수 실행 
vector_split_fun(sentence)
##      [,1]      [,2]        [,3]           [,4]    [,5]     
## [1,] "OVER"    "HEAD"      "CRANEMAGNET"  "25TON" "(C-512)"
## [2,] "MAGNET"  "CRANESEMI" "2.8TON"       "C-522" ""       
## [3,] "25TON"   "BLOCK"     "LOADER"       "PBS"   "5BAY"   
## [4,] "2TON3DS" "뒷편"      "법면쪽"       ""      ""       
## [5,] "LIFTING" "MAGPOT"    "DEVICE2.5TON" ""      ""
반응형
반응형

   R Freind는 내가 초기에 R을 많이 헤메 였을대,  이 쪽 사이트를 참고 하였다.    초보자들에게 필요한 정보만 아주 쉽게 풀어서 쓴 사이트 이야기 이다. 

 

https://rfriend.tistory.com/

 

R, Python 분석과 프로그래밍의 친구 (by R Friend)

R, Python 분석과 프로그래밍, 통계, Machine Learning, Greenplum, PostgreSQL, Hive, 분석으로 세상보기, 독서일기

rfriend.tistory.com

 


주제

   R 과 Python을 주요 주제로 한다.   초보자들이 보고 따라하기 쉬울 정도로 글과 예제를 구성 한다.   이쪽 사이트는 글도 그 다지 많이 쓰지 않는다.   다만 사용자 들이 사용하기 쉽게 글을 구성 한다. 

 

   총 방문자 : 7,649,733 명

   일 방문자 : 11,000 명

   블로그 게시일 : 2015년 6월  6년 이상 된 블로그

 

이걸로 먹고 살 정도로 많은 팁을 구성 한다.   

 

제목도,  R,Python 분석과 프로그래밍의 친구로  사람들이 외우기 쉽게 구성 하였다.   지금 하고 제목으로 하고 있는 오늘도 데이터 와는 많이 다르다.  

 

주요 카테고리 

  R 분석과 프로그래밍, 

  Python 분석과 프로그래밍

  Greenplum and PostgreSQL datavase

  Hive

  Deep Learing with tensorflow

  GitHub

 분석으로 세상 보고

 독서 일기

 인테리어 쇼

 

인터넷에서 SEO  또는 애드센스 승인 이야기 할때,  글자 수를 강조 하였는데,   이 곳은 그러하지 않다.  

제목을 사용 할때,  기가 막히게 구성 했는데 구성은 아래와 같다. 

 

"ggplot2의 커널 밀도 곡선(Kernel DensityCurv)의 좌표 구하고, 수직선 추가하기"

 

제목도 아주 구체적이고,  한글로 적혀 있다.   나의 블로그와는 전혀 다르다.    마치 검색 엔진아 나 찾아 봐라이다. 

 


문단구성

 구성은  먼저 이야기 할 주제를 나열 한다. 

(1) R ggplot2를 이용하여 커널 밀도 곡선(Kernel Density Curve)을 그리기

(2) 커밀 밀도 곡선의 최대 피크값의 좌표 구하기 
   (X, Y coordinates of the peak value in kernel density curve)

(3) 커널 밀도 곡선의 최대 피크값 위치에 수직선을 추가하는 방법 (adding a vertical line at peak value in kernel density plot)



그리고 제목은 강조 한다.  그리그 그래프를 그릴때,  먼가 강조하는 포인트를 준다. 

 

수학적인 내용도 없고 간단한 설명과 코드로만 되어 있다. 

 

 블로그를 구성하면서,  제목이 매우 중요하다고 하였지만,   매우 제목을 잘 지었다.  

 


결론 및 비교

  내가 운영하는 오늘도 데이터와는 매우 차별와 된다. 

 https://rdmkyg.blogspot.com/

 

오늘도 데이터

오늘도 데이터는 매일 데이터를 분석 하는 방법을 R과 Python을 이용하여 공유하며, 분석 요청시 무료로 한다.

rdmkyg.blogspot.com

 

일단 내가 운영하는 사이트는 제목부터가 이상하다.  제목에 모든 내용이 함축되어 있고,  가능한 한글화 되어 있어야 한다.   내용도 간단하고 쉬워야 한다.    

 

 나는 다른 사람과 다르게 실무 위주로 한다고 하면서 어려웠던 이야기만 적은 것 같다.  내용은 길지 않으면서,  주제에 대한 정의를 먼저 하고,  특히 이쪽 사이트에는 평이 없었다.   나의 블로그는 평이 많았는데,  그것이 조금 다르다.  물론 이 사이트에도 시리즈가 있다.   

  

    

반응형

+ Recent posts