레이블이 python인 게시물을 표시합니다. 모든 게시물 표시
레이블이 python인 게시물을 표시합니다. 모든 게시물 표시

sigmoid 함수 그리기 및 역할 및 그래프 문제 해결

 math 함수를 쓰다가  TypeError: only size-1 arrays can be converted to Python scalars 가 발생 되었다.   즉 Math 함수는 list를 미리 만들어 넣고, append 해야 하는 것이고,  numpy는 arrange 해야 했다.   

신경망을 위한 데이터 표현의 기하학적 해석

      딥러닝을 맨 처음 시작 할때,  배우는 것이 이것이 아닐까?   선행대수학의 기초가 되는 것이지만,  케라스 창시자에게 배우는 딥러닝에서는 수학공식을 기록하지 않고, 데이터만 표현 하였다.    여기에서는 수학적인 해석까지 덧붙여 표현 할 것이다. 


  여기에서 핵심 키워드를 이야기 하면 아래와 같다.


텐서는 임의의 차원 개수를 가지는 행렬의 일반화된 모습이다. (텐서에는 차원(dimension)을 종종 축(axis)이라고 부른다.


LightGBM 카테고리 변수 (Categorical Variables) 트리기반 그라이던트 부스팅 Telco Customer Churn (통신회사 고객 이탈)

   현업에 있으면,  직면하는 데이터는 항상 범주형(카테고리) 데이터 셋이다.   다른 모델로 하였을 경우 범주형 데이터는 항상 원-핫 인코딩을 하여 계산 하여야 만 했다.   하지만, 원-핫 인코딩을 하지 않고,  범주형 데이터를 이용하는 것에 대하여 매우 인상 적이다.  

 하지만 그라이언트 부스팅 방법은 과대적합(overfitting)의 문제를 가지고 있으므로, 각종 파라미터를 잘 검토하여,  실행 하여야 하며,  모델을 실행한 후에 모델 평가를 통해 반드시 검증해야 하는 알고리즘이다.    


Light GBM


ubunt GPU 설정 후 Keras 버전 테스트 MNIST

   ubunt GPU RTX3080 설정 후  Keras가 실행 되는지 확인 해봐야 한다.   RTX3080을  설치가 다 끝났는데,  케라스가 설치되어 있지 않아,  계속 재 설치 하였기 때문이다.  

그렇다고 무언가 대단한 것을 테스트 할 필요는 없다.   되는지 만 확인 해야 하기 때문이다.  

아래의 소스코드는 "케라스 창시자에게 배우는 딥러닝" 책에서 인용한 것이다. 

Ubuntu 18.04 시작시 jupyter notebook 자동 실행 anaconda 환경

 anaconda 환경에서  Ubunt 18.04 시작시 jupyter notebook 실행 하는 것은  쉽지 않은 일이다.   즉 OS에 대한 이해가 없으면,   자동으로 jupyter notebook 실행을 할 수 없다. 

나는 아래와 같은 시도를 하였지만,   실패 하였다. 

$ crontab -e

@boot  jupyter-notebook --ip "192.168.0.12"

이것은 될 리가 없다.   root 계정에 anaconda를 설치 하지 않았기 때문에,  root 계정에서는 Anaconda 실행 환경이 되지 않는다. 

Python 분류 산점도 seaborn 그래프

    iris 붓꽃 데이터는 머신러닝용으로 아주 유명한 데이터이다.  R을 배우건 Python을 배우건 무조건 경험 하는 것인데,   처음에 보면  데이터가 매우 생소하다 .  간단하게 설명 하면 꽃받침및 꽃잎의  길이,  넒이 가지고 꽃의 종을 결정 하는 데이터 이다.   데이터 표현에 있어서,  매우 용이한 데이터 셋이다.


  분류 산점도는 seaborn의 lmplot() 함수를 이용한다.  이것에 대한 문법에 있어서,  약간 특이 사항이 있다면, hue(색조)라는 것인데,  꽃의 종(데이터 그룹)을 분류하는  매계변수가 된다.   

matplotlib 그래프 그리기 DNN 딥러닝 Line chart

 딥러닝을 맨 처음 테스트로 배우는  쉬운 예제로 mnist 데이터셋을 사용한다.

사람이 우편번호를 적은 숫자를 컴퓨터가 얼마나 잘 인식 하는지에 대한 문제이다. 복잡한 그림의 문제는 CNN의 Convolution filter를 이용해서 Network를 돌리지만, 이건은 이미 전처리가 다 된 데이터 셋이고, 데이터 건수도 많아서 CNN까지 안 돌리고, 그냥 Deep Learing Network를 돌렸다.

아래는 tensorflow를 import한 다음에 내장 데이터셋 mnlist를 train과 test set으로 나눈것이다.


import tensorflow as tf

mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()

x_train, x_test = x_train / 255.0, x_test / 255.0

Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz

11493376/11490434 [==============================] - 0s 0us/step

matplotlib 그래프 그리기 scatterplot 산점도 소득과 행복간의 관계

 matplotlib 는 통계적으로 분석 할 수 있는 그래프가  있다. 대표적인 것이  scatterplot 산점도이다.  산점도는 변수간의 관계성이 있는지에 관한 이야기이다.    아래는 소득과 행복간의 관계를 따지는 산점도를 그릴 것이다. 

python & R anaconda, 아나콘다 설정 딥러닝 jupyter notebook 우분투 20.04

    jupyter notebook을 직접 설치를 할 수 있지만,  그 수없이 많은  패키지를 알기도 어렵고,  설치 하기도 어렵다. 

 따라서 anaconda에서 jupyter notebook 을 설치 하기로 하였다.   

어찌 되었든  딥러닝 연산용   jupyter notebook 이기 때문에  높은 사양의  PC를 사용하게 되었다.

 

GPU 설정 하는 것을 보려면 아래를 클릭 하면 된다. 

https://rdmkyg.blogspot.com/2021/12/ubuntu-2004-nvidia-gpu-cnn-2021-12-3.html

ubuntu 20.04 에서 nvidia GPU 및 CNN 설정 삽질기 2021-12-3일 [ Cuda 10.1 설정하면 문제 생김]

     우분투 설정에서 ubuntu 20.04 에서 nvidia  GPU 붙이기가 가장 어렵다.   수없이 많은 날들을 삽질을 하다가,  성공하는데,  그런데,  이번에는 내가 생각 하였던 것보다 어렵지 않게 설정 되었다.

항상 설치 하려고 하면 이런 메시지만 지속적으로 발생 하였다. 

> nvidia-smi 

“NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver” 


ubuntu 18.04 버전에서는 상당히 복잡하였는데,  아래와 같이 설치 되었다. 


nvidia 설정 완료

python list 와 R vector 와 비교 문자열 편

 python list  와  R vector는  유사점이 많다.  하지만 매우 같은 것이 아니다.  

같은 부분이 있다면,  요소를 추가, 삭제, 가능 하다는 정도이고,  다르다면,   Python list는 중괄호 []를 선택 하고  R vector는  소괄호()를 선택 해야 한다는 다른 점이 있다. 


그럼 아래와 같이 파이썬의 리스트 사항부터 보자. 

>>>names = ['a', 'b', 'c']

>>># 리스트에서 추출하기 

>>>names[0]

   'a'

>>>names[1]

  'b'

>>>#리스트 추가하기

>>>names.append("d")

>>>names

   ['a', 'b', 'c', 'd']

>>>#리스트 인덱싱하기

>>>names[0:2]
  ['a', 'b']

>>># 리스트 길이 구하기
>>>len(names)
   4

>>># 리스트 수정하기
>>>names[3] = 'e'
>>>names
  ['a', 'b', 'c', 'e']

>>> #리스트 삭제하기 
>>> del names

리스트 인덱싱은 약간 특이하다.   0부터 시작해야 한다. 길이도 구할 수 있고, 인덱싱도 전부 할 수 있다.      

R에서도 이것과 같이 수행 할 수 있다. 

> # R 벡터 만들기
> names <- c("a", "b", "c")

> # R 벡터에서 추출하기 
> names[1]
  'a'

># 벡터 추가
>names <- c(names,"d")
> names
   'a' 'b' 'c' 'd'

># R 벡터 인덱싱하기 
> names[1:2]
  'a' 'b'

># 벡터 수정하기
>names[4] ="e"
> names
  'a' 'b' 'c' 'e'

># 벡터 삭제하기 
>rm(names)

  R이나  파이썬 무언가 집합이나 배열 형태로 만들어 가는 것은  거의 같다.   R에는 list라는 개념이  있는데,  이것은 개념이 매우 다르다.  

R에서 list라는 개념을 알려면,   matrix를 알아야 한다. matrix는 numpy에서 자주 나오는 것이다.     이것은   R 과  Python을 이야기하기 위한 기초적인 것이다.  


R & Python 문자열 포메팅 print 문

  Python에서  문자열 포메팅은 모델을 결과를 보여 줄때,  예를 들면,  강아지와 고양이, 모델의 결과를 보여 보여 줄 때,  사용된다.   즉 Python에서 Print 문에서  숫자나 텍스트를 받고 문장을 표현 할 때 사용된다. 


문자열 포메팅  사용사례

R & Python 문자열 인덱싱 및 슬라이싱

  R과 Python의 가장 큰 차이가 나는 것이,  문자열 인덱싱과 슬라이싱 일 것이다.  즉, 

인덱싱은  문자에도 각 순번이 있어,  순번대로 가져오는 것이다.   그런데  R 과 파이썬 둘의  차이가 매우 크다,  어떻게 보면, 문자열을 초기에 핸들링 하기에는 Python이 더욱 쉬워 보인다. 


아래의 주어진 문자의 예를 들어 설명해 보자.  

text = "나는 고요한 아침의 나라 대한민국에서 살고 있습니다."

R & Python 문자열 반복 하기 (곱하기)

   R과  Python 공부에는 분명 계절성이 있다.   Python은 주로 겨울철에 많이 한다.  이유는 아주 간단한데,  GPU를 돌리게 되면,   전력 소비량도 많고,  여름철에는 더워지기 때문이다. 

    겨울철에는 GPU에서 나오는 열을 가지고 난방을 하니, 당연히 Python을 공부한다. 


이번에는 R 과 Python 문자열 곱하기 인데,   Python은 매우 쉽게 접근이 된다. 

Python은  문자열을 곱하면,  문자열을 곱한 만큼 반복이 된다. 

R & Python 문자열 붙이기

  R 하고 Python을 같이 사용하게 되면,  두개의 문법이 매우 헤깔리다.   헤깔린 부분을 해결하려면,  나름대로 기록이 필요하다.  

R에서는 paste  또는 paste0로 하지만, Python은  문자열 + 문자열로 한다. 


문자열을 그대로 붙이는 예제이다. 

R의 예제는 아래와 같다.  

> A = "경상남도"

> B = "거제시"

> paste0(A,B)

경상남도거제시


Python의 예제는 아래와 같다. 

> A= "경상남도"

> B = "거제시"

 A+B

경상남도거제시

위와 같이 문자열이 그대로 붙는다.  


문자열을 스페이스를 주고 붙이는 예제이다.   

R의 예제는 아래와 같다. 

> A = "경상남도"

> B = "거제시"

> paste(A,B)


Python의 예제는 아래와 같다. 

> A= "경상남도"

> B = "거제시"

 A+ " " +B

경상남도거제시





왼편 코드 R, 오른편 코드 파이썬  


신경망 알고리즘을 벡터화 한번에 전체 샘플 업데이트 야나두 딥러닝

확률적 경사하강법은 가중치 1번 업데이트 할때 1개의 샘플을 사용하므로, 손실 함수의 전역 최소값을 불안 정하게 찾았다.   

하지만,  배치 하강법은 가중치를 1번 업데이트 할때  전체 샘플을 사용하므로, 손실 함수의 전역 최소값을 안정적으로 찾는다.   

여기에서 가장 핵심적으로 이야기 할 수 있는 그림은 아래와 같다. 

점곱과 행렬곱의 차이



CNN 이미지 데이터 전처리 및 변환 기초 지식 [메모리와 하드 용량이 큰 경우 빠른 연산], Cat and dog dataset

    CNN 하면서 이미지 데이터 전처리는 아주 중요한 것이다.  본인이 수집하거나 관찰 한 사진이 많고,  데이터  라벨 작업을 하였다면,  아래와 같은  딥러닝 할 수 있는 데이터 셋을 만들어야 한다. 

즉 feature (image) 값과  label값(cat & dog)을   numpy array값을 변환 하여야 한다.  데이터 전처리 하는데,  아래의 2가지 방법이 있다.  이번 설명은 첫번째 설명 방법이다.   이런 방법으로 하려면,  RAM 메모리와 HDD 용량이 커야 한다.   

  • 이미지 데이터 원본 그대로 학습
  • Data generator 로 학습
  즉,  개별 설비를 AI로  자동 제어 하고자 하는 시스템을 구현하는 경우 첫번째 방법으로 한다. 

Image processing

참고로 훈련할 파일은 아래에 있다. 

그래프 그리기 2편 막대그래프 (bar graph), 원 그래프(pie chart) , 버블 차트(bubble chart) 야나두 딥러닝

    강의 시간 질문이 광범위 해서,  2번째 주제를 접하는데,   2번째 주제는  사실상  모델링 하기전에 미리 데이터 탐색용도로는 쓰이지 않고 사람이 보고 직관적으로 분석 하는 그래프이다.  실제로는 2번째 주제의 그래프가 많이 쓰이는데,   2번째 주제에 대한 그래프는 R이나 파이썬 같은 것보다는 파워포인트나 엑셀에서 작성 하는 것이 훨씬 좋다.   

엑셀이나 파워포인트에 이러한 기능 들이 잘 들어가 있다. 


파이썬 그래프 툴


그래도 대량의 데이터는 엑셀이나 파워포인트에서는 할수 없으니,  여기에서 다루어 보겠다. 


회귀 분석 최소제곱법 (선형 VS 경사하강법) 야나두 딥러닝

  야나두 딥러닝  강의를 하는 데,  질문이 나왔다.   linear regression(회귀 분석)을 할 때, 경사 하강 법에 의해 계산 된 것이 좋은지 ,  아니면, 통계학은 계산 된 최소 제곱법을 간단 하게 정리 하여 계산 한것이 좋은지 확인 해 보라는 것이였다.    


선형 VS  경사하강

  그런데,  야나두 딥러닝에서 경사 하강법을 가지고 회귀 분석하는 것은  교육용으로 쓰이는 것이다.   실무 용으로 쓰이는 것이 아니다.   

파이썬 기초 [리스트, if, for, 함수, 클래스] 야나두 딥러닝

   야나두 딥러닝에서 딥러닝 원리에 필요한 알고리즘만 모아 놓았다.  리스트, if, for 함수, 클래스가 많이 쓰인다.   다른 것도 있지만,  이번에 교육 할 때는 필요한 원리만 이야기 하는 것이 좋을 것 같다.   왜냐하면,  기초적인 개념을 많이 아는 것도 좋지만,  정보가 너무 많으면 수강생들이 많이 헤깔리기 때문이다. 

 보다 기초적인 개념을 알려며,  백문이 불여일견 인 것 처럼  백문이 불여일타 가 되어야 한다. 즉 기초적인 코딩도  훈련의 일종이다.    하긴  훈련을 아무리 많이 하여도 실전을 하지 않으면, 나중에 잊어 버린다.   이번에는 누가 봐도 잘 알 수 있게 끔 가능 한한 쉽게 하려고 노력 하였다. 


파이썬 기초


css cheat sheet 클래스 선택자, margin(마진), display , center 조정 간단한 구성 요소

 앞에서는 html의 간단한 sheet를 소개 하였습니다.   html은  주로 골격을 나타나는 것이라, 디자인을 하는데는 css로 하여야 합니다.  아래 코드와 같이 css 관련 하여 매우 간단하게 코딩 하겠습니다.  body 부분의 css 코딩  ...