scribblinganything의 등록된 링크

키자드에 등록된 총 694개의 포스트를 확인하실 수 있습니다.

Tistory

공분산 행렬이란? 예제로 값 구해보기(Covariance Matrix), 파이썬 코드

목차 공분산 행렬(Covariance Matrix)이란? 공분산 행렬이란 아래와 같이 수식(Equation)을 정의합니다. 행렬로 표기를 하고 시그마(Σ)로 표기합니다. 시그마(Σ)는 이산 적분식과 다르니 확실히 구분해서 생각해야 합니다. 하나의 문자로 사용됩니다. 공분산 행렬은 저의 경우 기계학습의 PCA(Principal Component Analysis) 계산에서 사용되어 공부를 하게 되었습니다. 그 외에도 다양한 분야에서 공분산 수식으로 처리하는 경우들이 있습니다. 그림1과 같이 데이터셋(Dataset)을 통해 공분산을 만드는 방법에 대해 생각해보겠습니다. 데이터셋의 n행은 샘플들의 개수로 볼수 있고 d는 차원 값 또는 Feature라고 부르는 개수 입니다. 예를 들면 학생 4명에 대한 키와 몸무..

Tistory

정보이득이란? 지니불순도, 엔트로피, 분류오차 예제 풀이, 파이썬 코드 풀이(Information Gain, Gini Impurity, Entrophy, Classification Error)#1

정보이득이란(Information Gain)? 정보 이득(Information Gain)은 정보 이론과 머신 러닝에서 사용되는 개념으로, 주어진 속성이나 특성을 기준으로 데이터를 분할할 때 얻을 수 있는 정보의 양을 측정하는 지표입니다. 정보 이득은 데이터 분할 전후의 불확실성 감소량을 측정하여 해당 속성이나 특성이 분류 작업에 얼마나 유용한지를 평가하는 데 사용됩니다. 정보 이득은 지니불순도, 엔트로피, 분류오차(Gini Impurity, Entrophy, Classification Error)라고 불리는 개념을 기반으로 계산됩니다. 엔트로피는 주어진 데이터 집합의 혼잡도나 불확실성을 나타내는 지표로, 값이 작을수록 데이터가 분류되어 정돈되어 있다는 의미를 가지고 있습니다. 따라서 정보 이득은 주어진 ..

Tistory

정보이득이란? 지니불순도, 엔트로피, 분류오차 예제 풀이, 파이썬 코드 풀이(Information Gain, Gini Impurity, Entrophy, Classification Error)#2

목차 엔트로피를 사용해서 정보이득 풀이 및 파이썬 검증 앞서 포스트에서 정보이득(Information Gain)과 지니 불순도(Gini Impurity)를 사용해서 정보 이득을 구하는 방법에 대해 알아보았습니다(https://scribblinganything.tistory.com/719). 이번 포스트는 엔트로피(Entrophy)와 분류오차(Classification Error)를 사용해서 정보이득을 구하는 방법에 대해 알아보겠습니다. 우선 엔트로피 입니다. 정보 이론에서는 엔트로피를 확률 분포의 함수로 정의합니다. 엔트로피는 주어진 확률 분포에서 발생할 수 있는 모든 사건의 가능성을 고려하여 평균적으로 필요한 정보의 양을 측정합니다. 불확실성이 높을수록 엔트로피는 큰 값을 가지며, 불확실성이 낮을수록 ..

Tistory

[머신러닝] 공분산(Covariance)란? 특징 및 사용 목적

목차 [머신러닝] Covariance란? 그림1과 같이 한반에 학생에 대한 몸무게에 대한 샘플 값들을 위와 같이 가져왔다고 가정하겠습니다. 이때 평균을 x에 바로 표기된 점이라고 하면 샘플의 분산(Variance)는 아래와 같이 구할 수 있습니다. 분산이란 결국 평균 값에서 어느정도 벗어났는지를 계산하는 것입니다. 샘플의 분산 수식이 위와 같이 나오는 이유는 아래 링크에 자세하게 설명하였으니 참조하시길 바랍니다(https://scribblinganything.tistory.com/687). 이번에는 동일 학생으로 부터 키를 측정했다고 생각해보겠습니다. 이때 몸무게와 키의 측정 값으로 부터 유의미한 분석값이 있지 않을까 하는 고민에서 발생한 개념이 공분산(Covariance)입니다. 공분산은 수식1과 같이..

Tistory

[머신러닝]Correlation이란? Covariance 차이, 수식, 사용 목적(피어슨 상관관계)

목차 피어슨 상관관계(Pearson's Correlation)이란? 수식(Equation) 앞서 포스트에서 공분산(Covariance)에 대해 설명하였습니다(https://scribblinganything.tistory.com/714). 공분산의 특성은 아래와 같았습니다. 1. 공분산을 통해서 Postive, Negative, No trend의 관계를 확인할 수 있다. 2. 공분산의 결과 값 Cov[X,Y]의 크기를 통해서 공분산 정도가 크다라고 판단할 수는 없다. 3. 공분산 자체의 의미는 중요하지 않고 Correlation을 계산하기 위한 단계로 사용된다. 위 특성 처럼 Covariance와 두 데이터 간의 관계를 해석하는데 어려움이 있어서 Correlation을 사용합니다. Correlation의 ..

Tistory

[머신러닝]SVM(Support Vector Machines)이란? 예제와 수식풀이

목차 SVM(Support Vector Machines)이란? SVM이란 간단하게 Dicision Boundary를 만들어주는 것을 의미 합니다. Margin Maximal Margin Classifier Training Data와 Boundary 사이 가장 짧은 거리를 Margin이라고 합니다. 위 그림에서 파란색 화살표를 의미 합니다. 양쪽의 파란색 화살표의 길이가 동일할 때 마진(Margin)의 크기가 가장 큽니다. 이를 Maximal Margin Classifier라고 합니다. 녹색선은 아래와 같이 수식으로 표현될 수 있습니다. 결국 두 벡터의 내적(Dot Product)식이 됩니다. W벡터에 정사영되는 크기가 C로 일정한 x 벡터는 녹색 점선을 가리키는 벡터가 됩니다. 최종적으로 그림3의 노란색..

Tistory

[머신러닝] K mean clustering이란? 예제로 이해하기(클러스터링)

목차 K mean clustering이란? 위 그림1과 같이 무게 별로 측정한 샘플이 12개가 있다고 생각해 보겠습니다. 이를 3개의 Cluster로 나눈다고 생각하면 우리는 인직하는 그대로 쉽게 3개로 나눌수 있을 것입니다. 하지만 컴퓨터 프로그램이 위 분류를 진행하려면 어떻게 해야할 까요? Clustering 분류 방법 중 하나가 K mean Clustering입니다. 이번 포스터에서는 K mean Clustering에 대해 알아보겠습니다. K는 Cluster의 수를 의미합니다. 간단하게 각 클러스터의 평균으로 분류하겠다는 의미입니다. K mean clustering 예제로 알고리즘 만들기 1. 그림1을 분류할 덩어리인 Cluster의 수 k 값을 결정합니다. k 값 결정은 포스트 뒤쪽에서 설명 드리..

Tistory

[Classification] Decision Tree 예제 설명 #1 (Gini Impurity)

목차 Decision Tree란? Decision Tree란 위 그림과 같이 배고픔 Statement을 통해서 Decision을 진행합니다. 이때 Statement의 True와 False에 따라 다음 행동을 결정합니다. Statement True / False 위와 같이 Decision Tree의 결과가 카테고리로 결정 되면 Classification Tree라고 합니다. 결과가 밥을 몇 그릇 먹을지와 같은 숫자의 형태의 경우 이를 Regression Tree라고 합니다. Classification Tree Regression Tree 결과를 카테고리와 숫자를 섞은 형태의 Tree 사용도 상관 없습니다. 위와 같은 트리의 특징은 아래와 같습니다. 1. Numeric Threhold는 다르게 설정 가능 2..

Tistory

[Classification] Decision Tree 예제 설명 #2 (노드 순서 정하기)

목차 앞 시간 포스트(https://scribblinganything.tistory.com/709)에 이어서 이번에는 나이(Numeric value)에 대한 지니 불순도(Gini Impurity)를 계산해보겠습니다. Decision Tree : Gini Impurity 예제로 알아보기 나이의 지니 불순도(Gini Impurity)를 구하기 위해 나이순으로 테이블을 정렬합니다. 위 테이블과 같이 7에서 83으로 작은 수에서 큰수로 정렬합니다. 다음으로 위와 같이 나이들의 평균 값을 구해줍니다. 다음으로 그림1과 같이 평균을 경계로 수식1을 적용해서 지니 불순도(Gini Impurity)를 구합니다. "나이

Tistory

[머신러닝] Regression Tree란? 예제로 쉽게 이해하기

목차 Regression Tree란? 그림1은 약 하루 섭취 정량이 100%일 경우 섭취량에 따른 효과를 그래프로 그린 것입니다. 기울기와 절편 두 개의 베타(Beta) 파라미터로 표현하는 선형 회기식(Linear Regression)으로 위 그래프를 예측하기 힘듭니다. 그래서 사용하는 방식이 Regression Tree 입니다. Tree 방식에 대한 이해가 부족하면 Regression Tree 를 이해하기 힘드므로 Decision Tree(https://scribblinganything.tistory.com/709) 글을 먼저 보고 오시길 바랍니다. Classification Tree와 회기 트리(Regression Tree) 차이 두 트리 구조의 가장 큰 차이는 Leaf Node에 의해 결정됩니다. ..

Tistory

[머신러닝]Regression Tree 가지치기(Prune) 예제로 쉽게 이해하기(Cost Complexity/Weakest Link Prunning)

목차 Regression Tree 가지치기란? 앞서 회기형 트리에 대해서 배워보았습니다(https://scribblinganything.tistory.com/711). 회기형 트리(Regression Tree)를 만들때 모든 Training Data에 대해 세분화 해서 Node를 만들어서 분류를 하게 되면 Overfitting이 발생한다고 하였습니다. 이렇게 만들어진 트리 모델을 Test Data에 대입해 보면 Overfitting에서 RSS 값이 높게 나올 수 있습니다. 즉, Overfitting에 의해 Variance가 높아지는 것입니다. 그림1과 같이 하루 약 섭취에 대한 효과의 데이터를 통해 회귀 트리(Regression Tree)를 오른쪽과 같이 만들 수 있습니다. 만드는 방법은 앞전 포스트를 ..

Tistory

[머신러닝] 랜덤포레스트란? 쉬운예제로 이해하기(Random Forest, Bagging, Bootstrap)

목차 랜덤포레스트(Random Forest)란? Random Forest 는 Forest의 의미가 주듯이 트리를 모은 숲을 의미 합니다. 트리의 의미에 대해 알고 싶다면 아래 블로그 글부터 순차적으로 확인하시길 바랍니다(https://scribblinganything.tistory.com/709). 랜덤 포레스트를 사용하는 목적은 트리의 특성에 있습니다. 트리는 Training Data에서 높은 정확도(Accuracy)를 가지지만 Testing Data에서는 정확도가 떨어집니다(Inaccuracy). 랜덤포레스트는 이러한 트리들을 랜덤하게 형성해서 정확도(Accuracy)를 높이는 목적으로 사용됩니다. 랜덤포레스트(Random Forest) 모델 생성 테이블1은 데이터셋으로 과자, 채소, 피자를 하루에 ..

Tistory

SGD, BGD, mini BGD란? 차이를 예제로 쉽게 이해하기(Stochastic Gradient Descent, Batch, Epoch, Iteration)

목차 SGD란?(Stochastic Gradient Descent) SGD(Stochastic Gradient Descent)는 머신 러닝에서 가장 많이 사용되는 최적화 알고리즘 중 하나입니다. 이 알고리즘은 모델의 파라미터(Parameter)를 조정하여 손실 함수 값이 가장 적게나오는 지점을 찾아서 그때의 파라미터를 사용해서 모델을 만들어 냅니다. SGD의 특징은 전체 데이터셋을 한 번에 학습하는 대신 데이터셋을 무작위로 섞은 후 일정 크기 데이터 포인트에 대해 모델을 학습시킵니다. 이렇게 하면 학습이 더욱 빠르게 수렴하고, 더욱 미세한 변화도 파악할 수 있습니다. 여기서 중요한 용어 3가지가 나옵니다. Batch-Size(배치 사이즈) 위 그림에서 녹색에 해당하는 부분입니다. SGD에서 데이터를 처리..

Tistory

[로지스틱회귀]로짓, 우도, 오즈비 란?(Logit, Log odds, Likelihood function, Logistic Regression)

목차 Logistic Regression logit(로지스틱회귀 로짓)이란? 앞서 포스트에서 로지스틱 회귀에 대해 간단히 알아보았습니다([머신러닝]로지스틱회귀란?(Logistic Regression, 시그모이드 함수) (tistory.com)). 이번에는 로지스틱 회귀의 다양한 특성에 대해 알아보겠습니다. 로지스틱 회귀분석(Logistic Regression)은 분류(Classification) 모델 중 하나로, 기존에 Linear Regression으로 모델을 예측하기 힘든 Category로 분류해야하는 경우 사용합니다. 로지스틱 회귀는 시그모이드 함수 형태를 사용해서 수식1과 같이 나옵니다. 로지스틱 회귀분석에서 "logit"이란, 로지스틱 회귀모델에서 선형 예측식을 구성하는 항으로, 로그 오즈(lo..

Tistory

Multinomial Naive Bayes Classifier 수식 및 스팸 메일 예제로 이해하기(Laplace estimator)

목차 Bayes’ Theorem 베에즈 이론에 대해 알아보겠습니다. P(A|B) : Posterior P(A) : Prior P(B|A) : Likelihood P(B) : Normalizing Constant Bayes 이론은 사전 확률(prior probability)과 사후 확률(posterior probability)을 사용하여 어떤 사건이 발생할 확률을 계산합니다. 사전 확률은 사건이 발생하기 전에 이미 알고 있는 정보를 바탕으로 계산되며, 사후 확률은 사건이 발생한 후 추가 정보를 토대로 계산됩니다. 간단히 말하자면 training data set으로 P(A|B)와 P(B)를 알아내고 P(B|A)를 구하는 것입니다. 구하고자 하는 값은 위와 같습니다. 해당 값이 무엇인지는 아래 예제를 한번 해..

Tistory

가우시안 나이브 베이즈 이론이란? 스팸메일예제로 쉽게 이해하기(Gaussian Naive Bayes)

목차 가우시안 나이브 베이즈 이론이란(Gaussian Naive Bayes)? 앞서 포스트에서 Multinomial Naive Bayes Claasifier에 대해 배워 보았습니다(https://scribblinganything.tistory.com/707). 이번 가우시안 나이브 베이즈 이론은 Multinomial Naive Bayes Claasifier의 연장선상에서 배우는 개념이라 혹시 앞에 포스트를 보지 않으셨다면 보시고 오시길 추천 드립니다. 수식1의 Naive Bayes 이론을 사용해서 수식2를 전개 하였습니다. 수식2를 통해 우도(Likelihood)의 확률 값를 구할 수 있었습니다. 기존에 확률 값 p를 스팸 메일의 n 개 중에 "A"라는 문구가 들어간 개수 m을 찾아서 구하는 방식이었다면..

Tistory

Classification 모델 성능 검증: Accuracy, Precision/Recall, ROC-AUC(예제 실습, 파이썬)

목차 Classification 모델 성능 검증: Accuracy 머신러닝에서 Accuracy, Precision/Recall, ROC-AUC는 분류 문제의 성능을 평가하는 지표들입니다. 이러한 지표들은 모델의 예측 결과를 실제값과 비교하여 얼마나 잘 예측하는지 측정합니다. Accuracy (정확도)란 전체 데이터 중에서 모델이 올바르게 분류한 데이터의 비율입니다. 정확도는 가장 직관적인 지표이지만, 클래스 간 데이터의 분포가 불균형할 경우 잘못된 성능 평가를 할 수 있습니다. 간단히 말해 실제 데이터 수에서 바르게 예측한 비율입니다. 정확도 = (올바르게 분류된 데이터 수) / (전체 데이터 수) Accuracy 예제 Accuracy를 이해하기 위한 간단한 예제를 드리겠습니다. 이진 분류 문제를 가정해..

Tistory

[머신러닝]민감도, 특이도, F1-Score란?(Sensitivity, Specificity)

목차 민감도, 특이도란?(Sensitivity, Specificity) 민감도(sensitivity)는 모델이 양성 클래스(positive class)를 정확하게 예측한 비율을 의미하며, 특이도(specificity)는 모델이 음성 클래스(negative class)를 정확하게 예측한 비율을 의미합니다. True Positive (TP): 100개 (실제 스팸인데 스팸으로 예측한 경우) False Positive (FP): 30개 (실제 정상 메일인데 스팸으로 예측한 경우) True Negative (TN): 850개 (실제 정상 메일인데 정상 메일로 예측한 경우) False Negative (FN): 20개 (실제 스팸인데 정상 메일로 예측한 경우) Positive = TP + FN : 120개 (실제..

Tistory

선형회기 Gradient 수식 풀이(편미분, equation, Linear Regression)

목차 이번 포스트에서는 선형회기의 Gradient 구하는 방법을 수식으로 전개해보겠습니다. 선형회기 Gradient 수식 풀이: 선형회기식 선형 회기란 위 그래프와 같이 데이터가 주어져있을 때 데이터 셋을 대표하는 모델링을 하는 것입니다. 위와 같은 모델은 수식1과 같이 간단한 1차원 수식으로 전개 됩니다. 이때 베타 파라미터(parameter) 값을 찾는 것이 선형회기 이론입니다. 위 수식은 하나의 입력에 대한 출력이고 다차원으로 가면 아래와 같이 수식을 쓸 수 있습니다. 위와 같은 수식을 Linear Regression Hypothesis라고 합니다. 선형회기 Gradient 수식 풀이: Cost Function & Gradient Loss 함수 또는 Cost 함수는 수식2의 예측 값의 오차가 얼마나..

Tistory

로지스틱 회기 Gradient 수식 풀이(Logistic Regression, Equation)

목차 로지스틱 회기 Gradient 수식 풀이: 로지스틱 Logistic Regression은 위와 같이 시그모이드(Sigmoid) 함수 형태를 따릅니다. 수식은 다음과 같습니다. 입력 값이 많아지면 아래 수식2와 같이 표현 될 수 있습니다. p(x)는 확률 값으로 0~1 사이로 표현 될 수 있습니다. 로지스틱 회기 Gradient 수식 풀이: Cost Function & Gradient 확률값의 Cost Function은 CE(Cross Entropy)로 표현 합니다. 엔트로피의 개념은 아래 링크를 참조하시길 바랍니다(https://scribblinganything.tistory.com/700). 크로스 엔트로피는 기존의 엔트로피에 자신의 예측치를 넣은 값으로 예측치와 실제 값이 맞을 확률이 높아 질수..

Tistory

[머신러닝]일반화(Generalization), 과적합(Overfitting, Underfitting)이란? 파이썬 코드 예제(그래프 포함)

목차 일반화(Generalization), 과적합(Overfitting, Underfitting) 이란? 일반화(Generalization) 머신러닝에서 Generalization(일반화)은 모델이 학습 데이터에 대해 학습한 후, 이전에 본 적 없는 새로운 데이터에 대해 정확하게 예측할 수 있는 능력을 말합니다. 예를 들어 앞서 선형 회기(Linear Regression)에서 가지고 있는 데이터 셋을 사용해서 파라미터들을 유추해서 모델링을 만들어 이 후에 발생하는 입력에 대한 출력을 예측 가능하게 하는 것을 의미합니다. 과적합(Overfitting/Underfitting) 일반적으로 머신러닝 모델을 학습시키는 과정에서는, 훈련 데이터셋을 사용하여 모델의 가중치(Weights)를 조정하고 최적화를 수행합니..

Tistory

[선형대수학] 행렬 고유값과 고유벡터란? 수식풀이, 파이썬으로 예제 검증(Eigen value, eigen vector, python)

목차 [선형대수학] 행렬 고유값과 고유벡터란? 선형대수학에서, 고유값(eigenvalue)과 고유벡터(eigenvector)는 선형변환(linear transformation)에 대한 중요한 개념입니다. 선형변환은 벡터를 다른 벡터로 변환하는 연산입니다. 예를 들어, 2차원 벡터를 회전하는 변환이나, 3차원 벡터를 축소시키는 변환 등이 있습니다. 이때 고유값과 고유벡터는 선형변환에 대한 특별한 속성을 가지고 있습니다. 고유벡터는 선형변환을 적용해도 방향이 변하지 않는 벡터를 말합니다. 다시 말해서, 어떤 선형변환을 적용하더라도 그 벡터가 향하는 방향은 변하지 않습니다. 수식으로는 다음과 같이 표현할 수 있습니다. Av = λv, 수식1 여기서 A는 선형변환, v는 고유벡터, λ는 고유값입니다. 동일한 벡..

Tistory

[머신러닝] 편형(Bias)와 분산(Variance)란? 파이썬 예제 코드로 이해하기(Trade off)

[머신러닝] 편형(Bias)와 분산(Variance)란? 머신러닝에서 편향(bias)과 분산(variance)은 모델의 성능과 일반화 능력에 영향을 주는 두 가지 주요 요소입니다. 이 두 가지는 모델의 예측 오차를 계산하는 데사용 합니다. **바는 평균을 의미 하고 삿갓은 추정값을 의미합니다. 1. 편향(bias) : 편향은 모델이 실제 데이터와 얼마나 차이가 있는지를 나타내는 척도입니다. 높은 편향을 가진 모델은 학습 데이터에 대해서도 부정확한 예측을 하는 경향이 있습니다. 이는 모델이 너무 단순하거나, 데이터의 복잡한 패턴을 충분히 학습하지 못한 경우 발생합니다. 이를 과소적합(underfitting)이라고도 합니다. 2. 분산(variance) : 분산은 모델이 학습 데이터의 작은 변화에 얼마나 민..

Tistory

[머신러닝] k-fold cross validation이란? 파이썬 예제 실습

목차 [머신러닝] k-fold cross validation이란? k-fold 교차 검증(k-fold cross validation)은 머신러닝에서 모델의 성능을 측정하고 검증하는 기술 중 하나입니다. 이 방법은 데이터 세트를 k개의 부분집합으로 분할하고, 이 중 하나를 검증 데이터(validation data)로 사용하고, 나머지 k-1개의 부분집합을 학습 데이터(training data)로 사용하여 모델을 학습시키는 과정을 k번 반복하는 것입니다. 이 과정에서 k개의 모델이 생성되고 각각의 모델은 서로 다른 검증 데이터로 성능을 측정합니다. 이렇게 측정된 성능 지표를 k번 평균하여 최종 성능 지표를 계산합니다. 위 그림의 경우 5-fold cross validation을 수행합니다. 데이터 세트는 5..

Tistory

엔트로피(Entropy)란? 파이썬 엔트로피 예제 실습

목차 엔트로피(Entropy)란? 엔트로피는 머신러닝에서 데이터셋의 불확실성을 나타내는 척도입니다. 엔트로피를 계산하기 위해서는 데이터셋에서 각 클래스가 발생할 확률을 알아야 합니다. 수식으로 표현하면 다음과 같습니다. 여기서 H(X)는 데이터셋 X의 엔트로피를 나타내며, p(x)는 데이터셋 X에서 클래스 x가 발생할 확률을 나타냅니다. 이 식은 다음과 같이 해석할 수 있습니다. 데이터셋에서 각 클래스가 발생할 확률을 곱한 후, 이를 로그로 변환하고 음수로 바꾼 값들을 모두 더한 것입니다. 수식1에서 log2를 사용하는 이유는 확률의 특성과 관련이 있습니다. 우선, 확률은 항상 0과 1 사이의 값을 가집니다. 하지만, 이러한 확률을 곱하면 값이 매우 작아질 수 있습니다. 예를 들어, 0.001과 0.00..

Tistory

통계 가설검정, 귀무/대립 가설, 유의수준, p-value(Hypothesis Test, Null, Alternative)이란? 선형회기(Linear Regression) 수식 적용

목차 통계 가설 검정, 귀무/대립 가설, 유의수준, p-value란? 가설 검증/검정(Hypothesis Tests)는 말 그대로 가설을 검증하는 이론입니다. 다만 느낌적으로 풀어내는 것이 아닌 수식적으로 풀어내는 것입니다. 예를 들어 동일한 크기의 소리를 발생하는 스피커를 제작 하는 회사가 있다고 가정하겠습니다. 해당 소리 크기는 10 pascal에 맞춰서 나온다고 합니다. 이중에서 샘플 n개를 뽑아서 실제 샘플의 스피커들이 10 pascal에 맞추는지 확인하는 것이 가설 검증이라고 합니다. 검증을 위해 2가지 가설을 세울 수 있습니다. 귀무가설(Null Hypothesis) : 반대로 기각하려는 가설 H0 대립가설(Alternative Hypothesis) : 증명하려는 가설 H1 가설 검증은 일반적..

Tistory

선형회기 R제곱 통계값이란?(Linear Regression, R2, R^2, R Square)

목차 선형회기 R제곱 통계값이란?(Linear Regression, R2, R^2) R제곱 통계값은 선형 회기 모델이 종속 변수에 대한 모델링을 얼마나 잘 표현해주었는지를 알려주는 적합도입니다. 결정계수라고 불리는 R제곱 값은 전체 변동량 중에서 선형 회기 모델에 의해 표현 되어지는 비율을 얘기합니다. 수식으로 표현하면 아래와 같습니다. 수식1에서 RSS는 Sum of Squared Residual 로 SSR로 표현하기도 합니다. RSS는 실제 데이터 값에서 추정값을 빼고 제곱을 취한 값으로 이를 Residual이라고 합니다. 수식1에서 TSS는 Total Sum of Square로 데이터 값에서 평균을 빼고 제곱을 취한 값입니다. TSS의 의미는 선형회기 모델이 만들어지기 전에 데이터의 예측 예러를 가..

Tistory

[Python] Multi Linear Regression 실습 3차원 모델 그리기 (Boston House Price 주택 가격 추정, 다수 선형 회기)

목차 파이썬 Multi Linear Regression 실습 #1 보스톤 주택 가격에 관련된 값들을 서버에서 받아서 dataframe으로 넣어 줍니다. 예제 코드>> import pandas as pd df = pd.read_csv('https://raw.githubusercontent.com/rasbt/python-machine-learning-book-3rd-edition/master/ch10/housing.data.txt', header=None, sep='\s+') df.columns = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV'] print(df.hea..

Tistory

[Python] 원핫인코딩(One Hot Encoding)이란? 쉬운 예제로 실습하기

목차 원핫인코딩(One Hot Encoding)이란? 원 핫 인코딩(One Hot Encoding)은 카테고리 변수(Categorical Variable)를 머신러닝에서 처리할 수 있는 Binary 벡터(Vector) 값으로 변환해주는 방법을 말 합니다. 선형 회기 예를 들어 설명하겠습니다. 위 수식1은 다중 선형 회기 수식입니다. X, Y 값은 사용자가 가지고 있는 데이터 셋의 값입니다. 만일 입력 값 중에 하나가 색상의 값으로 빨강, 노랑, 파랑 색으로 들어오면 해당 입력은 범주형 변수(Categorical variable)이므로 Binary로 변환해야 합니다. 그래서 아래와 같이 표현할 수 있습니다. 빨강 [1 0 0], 파랑 [0 1 0], 노랑 [0 0 1] 로 벡터 값으로 변환해서 처리 할 수..

Tistory

모집단과 표본집단의 평균,분산,표준편차, n-1로 나누는 이유, 수식 정리(mean, variance, standard deviation)

목차 모집단(Population)과 표본집단(Sample) 수식 정리 모집단/표본집단 평균(Population / Sample Mean) 모집단/표본집단 분산(Population / Sample Variance) 모집단/표본집단 표준편차(Population / Sample Standard Deviation) 모집단이란 실제 가지고 있는 모든 데이터 샘플을 의미 합니다. 표본 집단은 모집단 중에 일부를 샘플로 취해서 모집단의 평균, 분산, 표준 분산을 추정하는 목적으로 사용 됩니다. 표본집단(Sample) n-1 샘플로 나누는 이유 우선 수식을 떠나서 개념적으로 쉽게 이해해보도록 하겠습니다. 표본 집단을 사용하는 사용자가 N개의 모집단 데이터에서 n개의 샘플을 가져온다고 생각해보겠습니다. 여기서 우리는 평..

Tistory

정규 분포란? 표준화(X, Z값 변환) 쉽게 정리하기(수식, 테이블, Normal Distribution, Standard Distribution)

목차 정규분포란(Normal Distribution)? 그림1과 같이 벨 모양과 같이 생긴 형태의 그래프를 정규분포 그래프라고 합니다. 정규분포는 평균값(μ)과 분산(σ^2)에 의해 그래프 특성이 결정 됩니다. 평균에 의해 벨의 중심점이 결정됩니다. 그리고 분산 값에 의해 퍼짐 정도가 결정 됩니다. 그래프의 수식은 위 수식1과 같이 결정 됩니다. 또는 간단하게 아래 수식2와 같이 표현합니다. 평균(Mean)과 분산(Variance)만 있으면 그래프를 그릴 수 있기 때문입니다. 정규분포를 사용하는 이유와 언제 사용 하나? 사실 고등학교때는 무턱대고 위 수식으로 문제를 푸는 것에 집중했지만 사회를 나와서 이과를 다니다 보니 산업의 많은 분야에서 정규분포를 사용함을 알았습니다. 제가 생각하는 정규분포의 이용은..

Tistory

t 분포란? 자유도 n-1 사용 이유 쉽게 풀이(t-distribution)

목차 t 분포(t-distribution)란? 앞서 포스트에서 표본(Sample) 집단에서의 표본 평균, 표본 분산을 구하는 방법에 대해 알아보았습니다. 모(Population) 집단에서 표본 집단을 가지고 표준 정규 분포(Standard Normal Distribution)으로 만들면 아래와 같이 나옵니다. 수식1과 같이 X를 표준화하면 표준 정규 분포를 얻을 수 있습니다. 하지만 여기서 문제는 모집단의 표준편차(σ)를 구하기가 힘들다는 것입니다. 표본을 사용하는 이유가 모집단으로 데이터를 다 처리하기 힘들기 때문에 표본을 만든 것이기 때문에 수식1과 같이 모집단의 표준편차를 사용해서 정립하는 것이 현실에 맞지 않기 때문입니다. 그래서 모집단의 표준편차가 아닌 표본 집단의 표준편차(S)를 사용해서 표준..

Tistory

선형회기와 표준 오차(Linear Regression, Standard Error)

목차 표준 오차(Standard Error)란? 표준 오차를 이해하기 위해서는 기본적인 모집단(Population)과 표본 집단(Sample)에 대한 평균, 분산, 표준 분산에 대해 이해가 필요 합니다. 해당 카테고리에 내용들을 정리해 놓았으니 참조하시길 바랍니다. 그림과 같이 모집단에서 중복 순열로 샘플들을 뽑아내면 각 샘플에서의 평균을 구할 수 있습니다. 모집단의 평균기호에 바 기호를 붙여서 샘플의 평균 기호를 표기하였습니다. 여기서 샘플들의 평균을 모아서 아래와 같이 평균을 내면 모집단의 평균이 됩니다. 그리고 표본 집단의 평균으로 분선을 구하였더니 수식2와 같이 모집단의 분산에 n으로 나눠준 값이 나왔습니다. 앞서 포스터(https://scribblinganything.tistory.com/687..

Tistory

통계 신뢰 구간(Confidence Interval)이란? 선형회기 적용 수식 풀이

목차 통계 신뢰 구간(Confidence Interval)이란? 선형회기에서 신뢰구간(Confidence Interval)이 어떻게 동작하는지 알아보기 전에 통계학에서 신뢰 구간을 어떻게 정의하고 수식으로 전개하는지에 대해 알아보겠습니다. 그림1과 같이 모집단(Population)의 평균과 분산이 노란색 박스와 같이 이루어 져있을 경우 모집단에서 일부 샘플 n개를 가져와서 표본집단(Sample)을 만들 경우 해당 표본 집단은 정규분포의 확률 구조를 따른다고 앞서 배웠습니다. 이때 정규분포(Normal Distribution)의 특성을 알려주는 평균과 분산의 값은 그림1의 파란색 박스와 같습니다. 파란색 원의 표준 분포는 수식1과 같이 표기 해줍니다. 신뢰 구간을 얘기 하기 전에 표준 정균 분포(Stand..

Tistory

마르코브(Markov Chain) 체인이란? 파이썬(Python) 예제 실습

목차 마르코브(Markov Chain) 체인이란? 마르코브 체인은 통계적(Stochastic) 모델로 다음 상태의 사건이 발생할 확률에 대해 정의 합니다. 마르코브 체인을 설명할 때 중요한 요소는 아래의 두가지 입니다. 현재 상태(Current State) 다음 행동(Next Action) 마르코브 체인의 핵심은 각 이벤트의 확률은 이전 상태(State)에만 영향을 받는 다는 것입니다. 이것이 가능한 이유는 현재 상태가 과거의 확률적인 정보를 다 포함하고 있기 때문입니다. 예를 들어 위 그림1과 같이 음식을 먹을 확률이 정해져 있을 경우 현재 상황이 3월 20일인 상태(State)로 가정하고 20일에 한식을 먹고 3월 21일에 한식을 먹을 확률을 행렬로 표현하면 아래와 같습니다. 그림2의 행(Row)이 ..

Tistory

[Python]복잡한 미분함수 파이썬으로 구하기(사인 Sine/Cosine, 로그 Log/ln)

목차 파이썬으로 다항식 미분하기 미분식을 파이썬으로 구할 때 sympy 라는 라이브러리를 이용하면 쉽게 구할 수 있습니다. 아래 예제를 통해 쉽게 이해해보도록 하겠습니다. 수식1을 미분하는 코드는 아래와 같습니다. 예제 코드>> import sympy as sp x = sp.Symbol('x') y = (x-7)*(x+36.2) print(sp.diff(y,x)) 3번 라인: x라는 변수에 대해 미분을 하기위해 symbol 함수로 x를 설정합니다. 4번 라인: 전체 수식을 정의합니다. 6번 라인: 미분 함수 diff를 넣고 식과 미분할 변수를 입력값으로 넣어 줍니다. 결과>> 2*x + 29.2 이번 예제는 아래와 같이 다항식에 또다른 다항식을 나눠서 일반적으로 구하기 힘든 형태의 미분 식을 만들었습니다..

Tistory

베이즈 이론(Bayes Theorem)이란? 수식, 사용목적, 쉽게 이해하기

목차 베이즈 이론(Bayes Theorem)이란? 베이즈 이론을 이해하기 위해서는 조건부 확률에 대해 이해하여야 합니다. 수식1을 조건부 확률(Conditional Probability)라고 합니다. A라는 사건이 발생했을 때의 조건에서의 B라는 사건이 발생할 확률입니다. 동일하게 B라는 사건이 발생했을 때의 조건에서 A라는 사건이 발생할 확률은 수식2와 같이 표현할 수 있습니다. 수식1과 수식2를 이용하면 아래와 같이 구할 수 있습니다. 수식3을 이용해서 아래와 같은 수식을 만들어 낼 수 있습니다. 위 수식4가 이번 포스터의 목적인 베이즈(Bayes) 이론의 수식 입니다. 여기서 수식4에 대한 명명을 아래와 같이 하고 있습니다. P(B|A) : 사후 확률(Posterior) P(B) : 사전 확률(Pr..

Tistory

[머신러닝]소프트맥스 회귀란?(Softmax Regression)

목차 해당 포스트(Machine Learning)는 유투브 혁펜하임의 강의 내용을 듣고 제 생각대로 정리한 내용이라 틀린 내용이 있을 수 도 있습니다. Machine Learning 소프트 맥스 회귀란? 앞서 로지스틱 회귀 이론에 대해 알아보았습니다(https://scribblinganything.tistory.com/682). 로지스틱 회귀란 입력 값을 받고 이 값이 해당 라벨에 포함되는지를 확률적인 값으로 출력 해주었습니다. 예제로 여자 사람의 사진일 경우 1에 가까운 값을 출력 하고 그 외는 0에 가까운 값을 출력하는 로직이었습니다. 소프트 맥스 회기란 앞서 로지스틱이 하나의 출력만을 구분 지었다면 이번에는 출력을 벡터(Vector) 형식으로 보내서 여자 사람, 남자 사람, 고양이 등을 벡터에 값으..

Tistory

[머신러닝]데이터 세트(Dataset)란? sklearn iris 예제로 알아보기

목차 Machine Learning 데이터 세트(Dataset)란? 기계학습의 핵심은 데이터를 통해 학습을 하기 때문에 데이터란 기계학습의 근간이라고 할 수 있습니다. 머신러닝을 사용하는 사용자들 간에 데이터의 통일을 위해 암묵적인 합의에 대해 얘기할까 합니다. 데이터 셋은 아래의 2가지 요소로 크게 분류 할 수 있습니다. 행(Row) : Example 열(Column) : Features 아래의 간단한 예제를 통해 쉽게 이해할 수 있습니다. 녹색에 해당하는 행 부분이 예제(Example)이고 열로 표현되는 노란색 부분이 특징(Feature)을 의미합니다. 일반적인 데이터 셋이 그림1과 같이 구성됩니다. 그렇지 않은 경우도 가끔 있으니 데이터셋을 사용하실때 항상 데이터를 확인하셔야 합니다. 그림으로 표현..

Tistory

[Python] 머신러닝 Keras MNIST, CIFAR10 데이터셋이란? 실습

목차 파이썬 Tensorflow의 MNIST 이란? 앞서 포스트에서 데이터셋(Dataset)에 대해 알아보았습니다. MNIST는 텐서플로우(Tensorflow) 라이브러리에서 제공하는 데이터셋 입니다. 위와 같은 손으로 쓴 듯한 숫자 정보를 MNIST에서 가지고 있습니다. 그래서 해당 데이터를 이용해서 머신러닝(Machine Learning) 사용자들은 학습을 통해 해당 숫자를 구분하는 연습을 할 수 있습니다. 그리고 MNIST는 Modified National Institute of Standards and Technology 의 약자로 해당 기관에서 이미지 프로세싱(Image Processing) 학습을 위해 데이터를 제공 합니다. 위 그림과 같은 흑백의 경우 하나의 픽셀이 0~255의 값을 가지고 ..

Tistory

[선형대수학]직교행렬, Orthogonal, Orthonormal의 의미, 역행렬, 항등행렬, 대각행렬(Inverse, Identity, Diagonal Matrix)

목차 해당 포스트(Linear Algebra)는 유투브 혁펜하임의 강의 내용을 듣고 제 생각대로 정리한 내용이라 틀린 내용이 있을 수 도 있습니다. 직교행렬(Orthogonal Matrix)이란? 위 벡터(Vector)들은 Orthonormal 벡터라고 불립니다. Orthonormal은 서로가 직각을 이뤄서 Orthogonal 하고 Normalized 되어서 크기가 1인 벡터를 의미 합니다. Orthogonal 행렬이란 이러한 Orthonormal 한 벡터를 모은 행렬을 의미합니다. 위 수식1로 직교행렬을 만들면 위 수식2와 같이 만들 수 있습니다. 역행렬(Orthogonal)과 항등행렬(Identity)이란? 수식3과 같이 어떤 함수에 항등행렬을 곱하면 자기 자신이 나오게 만들어 주는 행렬을 항등행렬이..

Tistory

[선형대수학] 행렬의 Rank란? (Matrix)

해당 포스트(Linear Algebra)는 유투브 혁펜하임의 강의 내용을 듣고 제 생각대로 정리한 내용이라 틀린 내용이 있을 수 도 있습니다. [선형대수학] 행렬의 Rank란? (Matrix) 행렬에서 rank의 의미는 행렬이 가지는 독립적인 Column이나 Row의 수를 의미 합니다. 독립(Independent)의 의미는 https://scribblinganything.tistory.com/676 포스트를 통해 참조 하시면 됩니다. 독립적인 벡터가 결국 표현할 수 있는 차원의 수를 의미 했습니다. 그렇기 때문에 독립적인 Column의 수는 Rank이고 Rank의 개수가 Column Space를 표현하는 차원의 수를 의미 합니다. 예를 들어 알아보겠습니다. 위 수식1의 독립 Column 벡터의 수는 앞서..

Tistory

[머신러닝]로지스틱회귀란?(Logistic Regression, 시그모이드 함수)

목차 해당 포스트(Machine Learning)는 유투브 혁펜하임의 강의 내용을 듣고 제 생각대로 정리한 내용이라 틀린 내용이 있을 수 도 있습니다. Machine Learning 로지스틱회귀란?(What is Logistic Regression?) 앞서 퍼셉트론(Perceptron)에 대해 살펴 보았습니다(https://scribblinganything.tistory.com/674). 퍼셉트론이란 활성화 함수에 스텝 함수를 넣어서 -1 아니면 1이 되게 출력을 하였습니다. 로지스틱 회귀는 퍼셉트론과 유사한데 활성화 함수에 넣는 값이 Step Function이 아닌 시그모이드 함수(Sigmoid Function)를 넣어서 출력을 처리 합니다. 위 그림과 같은 형태가 시그모이드 함수의 그래프 입니다. 그..

Tistory

[머신러닝]퍼셉트론(Perceptron)이란? (MLP(Multi Layer), 활성화 함수, 사용목적, 풀이)

목차 해당 포스트(Machine Learning)는 유투브 혁펜하임의 강의 내용을 듣고 제 생각대로 정리한 내용이라 틀린 내용이 있을 수 도 있습니다. Deep Learning 퍼셉트론(Perceptron)이란? 앞서 포스트에서 신경망(NN, Neural Network)에 대해 알아보았습니다(https://scribblinganything.tistory.com/672). 해당 도식은 단순히 입력의 합을 출력으로 보내주었습니다. 퍼셉트론(Perceptron)은 기존의 입력이 출력으로 가는 활성화 함수(Acitivation Function)에 Step 함수와 같은 값을 넣어서 입력이 음수이면 -1을 양수이면 +1을 출력 해줍니다. 퍼셉트론(Perceptron)을 사용하는 이유(목적)은 0, 1과 같이 Dis..

Tistory

[선형대수학]행렬(Matrix) 곱셈의 의미, Span, Linear Combination: 내적(Dot Product),Rank1,열공간(Column Space),행공간(Row Space)

해당 포스트(Linear Algebra)는 유투브 혁펜하임의 강의 내용을 듣고 제 생각대로 정리한 내용이라 틀린 내용이 있을 수 도 있습니다. 행렬(Matrix) 곱셈의 의미 : 내적(Dot Product) X와 Y라는 행렬이 있습니다. X는 1 x n의 행벡터 x1~xn으로 구성되어 있습니다. Y는 n x 1의 열벡터 y1~yn으로 구성되어 있습니다. XY의 행렬곱은 수식1과 같이 정의 됩니다. 곱에 의한 수식을 보면 앞서 내적에서 공부한 내적 수식의 형태로 표현이 될 수 있음을 알 수 있습니다(https://scribblinganything.tistory.com/671). 즉, 행렬의 벡터들은 서로의 상관 관계를 알려주는 내적으로 곱이 표현됨을 알 수 있습니다. 행렬(Matrix) 곱셈의 의미 : R..

Tistory

[선형대수학]선형 독립이란? 직교와의 차이, 기저(Linearly independent, Orthogonality, Basis)

해당 포스트(Linear Algebra)는 유투브 혁펜하임의 강의 내용을 듣고 제 생각대로 정리한 내용이라 틀린 내용이 있을 수 도 있습니다. [선형대수학]선형 독립이란? 직교와의 차이 수식1과 같이 선형 조합(Linear Combination)으로 표현한 벡터(Vector)의 합이 0이되지 않는 조합으로만 이루어 진다면 이는 선형 독립 벡터(Linearly Independent Vector)라고 합니다. 예를 들어 수식2와 같은 벡터는 스칼라를 1과 -1/3으로 곱해서 더하면 0이기 때문에 선형독립이 아닌 벡터 입니다. 수식3과 같은 경우는 스칼라(Scalar) 값을 바꿔도 0을 만들 수 없기 때문에 x, y 벡터(Vector)는 선형 독립입니다. 선형 독립과 직교의 차이와 특성 그림과 같이 a, c와..

Tistory

머신러닝이란? 분류하기와 간단한 정리글(Machine Learning, Supervised/Unsupervised/Reinforcement Learning)

목차 Machine Learning이란? 분류 하기 위키피디아에서는 위 그림과 같이 AI > ML > Deep Learning 으로 관계를 정의합니다. 머신 러닝이라 함은 1959년에 Samuel에 의해 아래와 같이 정의합니다. Machine Learning: field of study that gives computers the ability to learn without being explicitly programmed 즉, 프로그램된 동작이 아닌 스스로 학습해서 행동하는 것을 머신 러닝이라고 합니다. 그 뒤에 Tom Mitchell 이라는 분이 1988년에 3가지 요소로 머신러닝을 다시 정의하였습니다. Learn from Experience With respect to some class of Ta..

Tistory

[선형대수학]행렬의 전치, 컬레복소수, 성질, 대칭(Transpose, Complex Conjugate, Symetric)

목차 해당 포스트(Linear Algebra)는 유투브 혁펜하임의 강의 내용을 듣고 제 생각대로 정리한 내용이라 틀린 내용이 있을 수 도 있습니다. 행렬의 전치(Transpose)란? 전치 또는 트랜스포즈라고 불리는개념은 위와 같이 행렬의 인자들을 대각선(Diagonal) 사선을 중심으로 바꿔주는 것입니다. 인자값의 관점에서 보면 행과 렬을 뒤집는 개념입니다. 표기는 위와 같이 T를 행렬 위에 붙여 줍니다. 행렬의 전치(Transpose) 성질 위 성질 대부분은 쉽게 이해가 가는데 성질3의 경우 두개의 행렬 곱을 전치 하는 경우 행렬의 위치가 바뀌니 이 부분을 주의할 필요가 있습니다. Symmetrix Matrix 위 그림과 같이 Digonal 성분을 제외하고 나머지 원소들이 Digonal선을 대칭으로 ..

Tistory

[머신러닝]경사하강법 미분 수식 풀이(Gradient Descent), 벡터 미분, Loss 함수, 학습률(Learning rate, Newton-Raphson)

목차 해당 포스트(Linear Algebra)는 유투브 혁펜하임의 강의 내용을 듣고 제 생각대로 정리한 내용이라 틀린 내용이 있을 수 도 있습니다. 선형 회기 Loss 함수 최소 값 찾기 앞서 포스트에서 선형회기(Linear Regression)에 대해 알아보았고(https://scribblinganything.tistory.com/668) 회기 모델을 만들기 위해 위 수식1을 최소화 하는 것이 데이터를 대표하는 모델이라는 것에 대해 확인하였습니다. 수식1은 Loss Function으로 2차 방정식입니다. f(x) 값이 작을 수록 loss 가 작아지는 것입니다. 찾고 싶은 값은 x 벡터(vector) 값입니다. 여기서 a는 기울기 b는 절편의 값입니다. 나머지 y벡터와 A 행렬은 이미 알고 있는 데이터 ..

Tistory

[선형대수학] 내적이란?(Dot product), 수식, 정규화, 단위 벡터(Normalize,Unit vector)

목차 해당 포스트(Linear Algebra)는 유투브 혁펜하임의 강의 내용을 듣고 제 생각대로 정리한 내용이라 틀린 내용이 있을 수 도 있습니다. 내적이란?(Dot product) 수식은 위와 같이 간단합니다. 예를 들어 [1 3], [2 4] 벡터의 내적은 위 수식에 따르면 2+12= 14가 됩니다. 내적의 의미에 대해 살펴 보겠습니다. 벡터의 크기를 알려 줄때는 위 수식2와 같이 || || 로 표기 합니다. 위 수식 2는 고등학교때 나오는 수식으로 좌표계에서 임의의 벡터에 대해 그려보면 수식2와 같이 증명이 됨을 알 수 있습니다. 수식2는 수식3으로 설명이 됩니다. x크기에 cosΘ를 곱한 것은 위 그림에서 노란선의 점선과 마주치는 곳까지의 y벡터 값이 됩니다. 즉 내적의 수식을 통해 의미를 살펴 ..

Tistory

[머신러닝] 인공 신경망이란?(ANN, Artificial Neural Network), 예제 풀이(Example)

목차 해당 포스트(Machine Learning)는 유투브 혁펜하임의 강의 내용을 듣고 제 생각대로 정리한 내용이라 틀린 내용이 있을 수 도 있습니다. 인공 신경망(ANN, Artificial Neural Network)이란? 위와 같이 몸무게 데이터와 수명과의 관계알려주는 데이터를 그림1과 같이 모았습니다. 이때 몸무게 데이터는 x값으로 그리고 수명 데이터는 y 데이터로 표기 해줍니다. 이를 선형대수학의 행렬(Matrix)과 벡터(Vector)로 표현하면 아래와 같습니다. 최종적으로 Loss 함수를 최소화(https://scribblinganything.tistory.com/670) 하는 x벡터 값을 찾는 것이 머신 러닝의 모델링 방법인 것입니다. 그리고 수식2와 같이 a, b 변수를 찾는 선형식이기 ..

Tistory

[선형대수학] 놈(Norm)이란? 벡터 길이측정(Vector, l1, l2, Infinity)

목차 해당 포스트(Linear Algebra)는 유투브 혁펜하임의 강의 내용을 듣고 제 생각대로 정리한 내용이라 틀린 내용이 있을 수 도 있습니다. Norm(놈)이란? 저희가 벡터(Vector)의 길이를 잴 때 사용하는 Norm은 2-Norm, L2-Norm 이라고도 부릅니다. 위와 같이 x벡터의 Norm은 아래와 같이 구할 수 있습니다. 위 수식1과 같이 2의 제곱으로 표현되기 때문에 2-Norm 이라고도 불립니다. 그리고 일반적인 벡터의 크기는 2-Norm으로 구해집니다. 수식1과 같이 절대값 아래에 2를 넣거나 생략이 가능 합니다. 1-Norm, P-Norm, Infinity-Norn 이란? 1 Norm은 수식1에서 2를 단순히 1로 바꾸기만 하면 됩니다. 위 수식2를 참조하시면 됩니다. 동일한 방..

Tistory

[Python] sklearn 정규 분포 만들기(StandardScaler), 그래프 비교

목차 파이썬 sklearn StandardScaler란? 빅데이터를 처리할때 일반적인 분포 데이터를 정규 분포의 데이터로 정규화(Normalization)하는 일들이 필요 합니다. 정규 분포란 평균(mean)이 0이고 분산(Variance)가 1인 데이터를 의미합니다. 분산에 대한 수식은 아래 링크를 참조하시길 바랍니다. https://scribblinganything.tistory.com/265 평균 제곱, 분산,자유도 (Mean Square, Variance,DOF) 이란? (의미, 계산법) 평균 제곱 (Mean Square) 이란? 평균제곱이란 아래와 같은 수식으로 전개 된다. mean-square 란 신호의 평균 힘(Strength) 또는 파워(Power)를 측정 한 값이다. 그림1은 자동차 진동..

Tistory

Q-Learning이란?(Epsilon-Greedy, gamma Discount factor, learning rate)

목차 해당 포스트(Reinforcement Learning)는 유투브 혁펜하임의 강의 내용을 듣고 제 생각대로 정리한 내용이라 틀린 내용이 있을 수 도 있습니다. Q-Learning이란? Q Learning 이란 강화 학습 알고리즘(Reinforcement Learning Algorithm)으로 보상을 받기 까지의 모델이 없는 상태에서 확률적인 동작으로 보상까지의 Quality를 찾는 과정입니다. 예를 들어 경로를 알려 주는 지도가 없는 경우에 부산에서 출발하는 사람이 있다고 생각하겠습니다. 서울에 도착하면 100원을 원주에 도착하면 80원을 보상을 준다고 가정하겠습니다. 여기서는 A10을 서울, A20을 원주로 가정하겠습니다. 위 테이블은 도시를 하나씩 이동할 때마다 State가 변하고(시간의 흐름),..

Tistory

[선형대수학] 정의, 행렬, 벡터, 성질, 연립일차방정식 (Matrix, Vector, linear system equation)

목차 해당 포스트(Linear Algebra)는 유투브 혁펜하임의 강의 내용을 듣고 제 생각대로 정리한 내용이라 틀린 내용이 있을 수 도 있습니다. 선형대수학(Linear Algebra)이란? 위와 같은 선형 방적식을 아래와 같이 행렬(Matrix)과 벡터(Vector)로 표현하는 수학을 선형대수학이라고 합니다. 다양한 수식을 선형(Linear)으로 평면의 형태로 표현하고 대수학의 의미는 평면의 매트릭스로 대신해서 표현하는 수학이라는 의미 입니다. 행렬(Matrix)과 벡터(Vector), 연립 1차 방정식이란? 우선 연립 일차 방정식(System of linear equation)은 수식1과 같은 1차 방정식을 사용해서 x,y와 같은 변수 값을 구하는 방정식을 의미 합니다. 행렬과 벡터는 기본의 정의를..

Tistory

[머신러닝] 선형회기 행렬, 벡터로 풀이(Linear Regression)

목차 해당 포스트(Linear Algebra)는 유투브 혁펜하임의 강의 내용을 듣고 제 생각대로 정리한 내용이라 틀린 내용이 있을 수 도 있습니다. 선형회기(Linear Regression) 란? 여러개의 데이터 셋이 있는 경우 데이터들 간에 상관 관계를 선형적으로 표현하기 위해 사용하는 알고리즘이 선형회기 입니다. 예를 들어 약 100명의 사람들의 키와 몸무게에 대한 정보를 가져옵니다. 데이터들이 위에서 검정색으로 표기된 점들입니다. 그리고 빨간 색 라인이 선형 회기 알고리즘으로 키와 몸무게 사이의 관계를 잘 표현한 모델이 되는 것입니다. 선형대수학으로 위 모델을 만드는 방식은 아래와 같습니다. x 값은 몸무게이고 y 값은 키 입니다. 여기서 x값과 y 값은 이미 알고 있는 값이고 a, b 벡터(Vec..

Tistory

Z 변환이란? (ROC, 수식 유도, Transform,Z-Domain, 라플라스 차이)

목차 해당 포스트는 유투브 혁펜하임을 참조해서 작성하였습니다. Z 변환(Z Transform)이란? 수식 풀이 Z변환이란 앞서 라플라스 변환을 연속이 아닌 이산/불연속(Discrete)에서 처리하는 변환 방식입니다. 앞서 포스트에서 라플라스(Laplace) 변환은 기본 함수에서 시그마 지수가 포함된 값을 넣어서 해당 전달함수가 수렴되는 영역(ROC, Regions of Convergence)을 찾았습니다. 이와 마찬가지로 Z변환도 일반 이산 주파수 변환에서 아래와 같이 r^(-n)을 넣어서 수렴 영역을 찾아 줍니다. Z변환은 위와 같이 기존의 이산 푸리에 변환에서 오메가 변수 이외에 r이라는 변수를 가지는 변환입니다. r과 Ω 를 아래와 같이 정의를 합니다. 수식2를 수식1에 정의해서 Z 변환 수식을 아..

Tistory

[Python] sklearn ColumnTransformer이란? 예제 실습(SimpleImputer, fit_transform)

목차 파이썬 ColumnTransformer 란? 파이썬의 머신러닝(Machine Learning)과 데이터 사이언스(Data Science) 파이프라인(Pipeline)에서 데이터 프로세싱(Data Processing)은 가장 시간과 노력이 많이 들어가는 일입니다. 일반적으로 현장에서 가져온 데이터들은 정형화 되지 않고 Machine learning 모델에 적용하기 힘든 형태 입니다. 일부 빠진 값들 표준화 되지 않은 값들 포맷에 맞지 않은 형태의 값들 중복되는 값들 위와 같은 형태들이 모델 적용이 어려운 raw data 들입니다. Sklearn의 ColumnTransformer는 위와 같이 처리가 어려운 값들을 파이프라인(Pipeline) 과정으로 사용자가 머신러닝(Machine Learning)에 ..

Tistory

[Python] 컴퓨터 화면 설정한 시간 별로 캡쳐하기(Screen Capture, ImageGrab)

목차 이번 포스트는 파이썬을 사용해서 사용자가 원하는 주기로 컴퓨터 화면을 캡쳐하는 프로그램을 만들어 보겠습니다. 그리고 화면 캡처를 진행하는 동안 컴퓨터를 자유롭게 동작하기 위해 프로그램이 백그라운드로 돌아 갈 수 있게 쓰레딩(Threading, 스레드)를 사용해보겠습니다. 소스 코드는 마지막에 다운로드 할 수 있습니다. [Python] 컴퓨터 화면 설정한 시간 별로 캡쳐하기 #1 예제 코드>> from PIL import ImageGrab pic_cnt = 0 def screen_capture(): img = ImageGrab.grab() img.save("image_{}.png".format(pic_cnt)) screen_capture() 결과>> 프로그램을 실행 시킨 폴더에 위와 같이 image_..

Tistory

[Python] 로그 그래프 그리기, numpy log1p, log, log10 함수 비교

목차 파이썬 numpy log1p vs log vs log10 함수 차이 사실 이부분은 코드와 결과를 수식으로 보여주면 정말 쉽게 이해가 됩니다. 하나씩 예제 코드와 함께 수식으로 정리하겠습니다. 전체 코드는 글 하단에서 다운 받을 수 있습니다. 예제 코드1>> import numpy as np x = np.exp(3) y= np.log(x) print(y) 결과>> 3.0 주석>> 위 수식은 x에 e 지수 값을 넣고 y는 ln으로 출력을 받습니다. 그래서 e^3이므로 y는 3이 출력 됩니다. 예제 코드2>> import numpy as np x = np.exp(3) y= np.log1p(x) print(y) 결과>> 3.048587351573742 주석>> log1p 함수는 입력값에 1을 추가로 더한 ..

Tistory

[Python] sklearn 파이프라인(Pipeline) + ColumnTransformers

목차 파이썬 sklearn 파이프라인(Pipeline) 이란? ColumnTransformers는 강력한 기능이지만 Column(열)을 단계별 스텝(Multiple step)으로 처리해야하는 경우 충분하지 않습니다. 파이프라인(Pipeline) 기능은 여러개의 transformer를 체인 형식으로 연결해서 복잡한 프로세스를 단계별로 처리하게 도와 줍니다. 앞서 배운 ConlumnTransformer 함수도 파이프 라인의 체인에 넣을 수 있습니다. 이번 포스트에서 사용할 예제는 아래와 같은 구조로 사용합니다. 그림과 같이 3x5의 행렬에 Non 값을 랜덤하게 넣습니다. 해당 데이터를 원하는 형식으로 가공하는데 ColumnTransformer를 사용해서 가공 합니다. 이때 사용자가 원하는 열부분만을 선택해서..

Tistory

[Python] sklearn 경사하강법(Gradient Descent)란? 사용방법 및 예제 실습(SGD)

목차 파이썬 Gradient Descent란? 선형 회기(Linear Regression)는 데이터 셋(Data set)을 대표하는 하나의 선을 구하는 작업이었습니다. 즉, Y = a x X + b에서 기울기 값 a와 절편 값 b를 구하였습니다. 이때 사용된 방식은 RSS(Residual Sum of Squares)이었습니다. 잔차 제곱 방식라고 불리는 예측되는 선형회기 선과 실제 데이터 셋의 제곱 합이 최소가 되게 만드는 선형회기 선을 만드는 작업입니다. 그림에서 파란색선의 제곱의 합을 RSS(Residual Sum of Squares)라고 하고 RSS(Residual Sum of Squares)가 가장 작은 지점의 기울기와 절편을 구하는 알고리즘은 OLS(Ordinary Least Sqaures)라고..

Tistory

[Python] Numpy where 함수란? 예제 실습

목차 파이썬 Numpy where 함수란? 파이썬 numpy.where() 함수는 조건에 맞는 입력 어레이(array) 값의 인덱스(index) 값을 알려줍니다. Syntax는 아래와 같습니다. numpy.where(condition[, x, y]) 조건문이 만족(True)할 경우 x값을 False 일 경우 y를 출력 해줍니다. 조건만 있을 경우 조건의 입력 값에 index를 출력 해줍니다. 파이썬 Numpy where 예제 실습#1 예제 코드>> import numpy as np a_var = np.array([[1, 2, 3], [4, 5, 6]]) print("raw_data") print(a_var) print ("5와 같거나 작은 index 값") indices = np.where(a_var> ..

Tistory

[실제 사용 후기] WH-1000XM5 무선 노이즈 캔슬링 헤드폰

목차 [제품 리뷰] WH-1000XM5 무선 노이즈 캔슬링 헤드폰, 장단점 질렀습니다...... 사고 싶다 생각만하다가 이번에 여행을 가게 되서 비행기에서 조용히 음악을 듣고 싶어서 ANC(Active Noise Cancellation) 중 최강이라는 소니(Sony)의 WH-1000XM5를 구매하게 되었습니다. 사실 WH-1000XM4와 WH-CH710N 도 같이 고민을 하긴 했는데 WH-CH710N는 생각보다 노이즈 캔슬링 기능이 약하다는 리뷰가 있어서 자금을 조금 더 보태서 WH-1000XM5로 사게 되었습니다. 사실 글재주가 없어서 전문가와 같이 리뷰는 어렵겠지만 제가 실제 사용해보고 느낀 점들을 정리해보겠습니다. 장점을 정리하면 아래와 같습니다. 1. 강력한 노이즈 캔슬링 제가 헤드폰(Headph..

Tistory

라플라스 변환이란? 사용 이유와 ROC(Region of Convergence), a+bj

목차 해당 포스트는 유투브 혁펜하임을 참조해서 작성하였습니다. 라플라스 변환(Laplace Transform)이란? 라플라스 변환은 간단하게 설명 드리면 푸리에 변환(Fourier Transform)의 확장 버전입니다. 위 수식1은 푸리에 변환 수식입니다. 라플라스는 위와 같이 기존의 푸리에 변환에서 시그마(sigma, σ)를 지수로 추가해서 오메가의 식만이 아닌 시그마와 오메가의 식으로 만든 것입니다. s= σ+jω 로 변환해서 우리가 잘알고 있는 라플라스 변환 식을 위와 같이 만들 수 있습니다. 역푸리에변환에 앞서처럼 시그마 지수를 곱하고 위와 같이 전개 하면 역라플라스(Inverse Laplace) 변환에 대한 식을 수식4와 같이 구할 수 있습니다. 라플라스 사용 이유와 ROC(Region of C..

Tistory

[무선청소기리뷰]발뮤다(Balmuda, C01A) 청소기(사용 후기)

목차 발무다(Balmuda, C01A) 무선 청소기 1년 사용 후기 사실 이번 무선 청소기는 디자인의 깔끔한 때문에 구매하게 되었는데 실제 1년간 사용해 보니 디자인 적인 측면 이외에도 기능적으로도 유용해서 리뷰글을 작성하게 되었습니다. 장점은 아래와 같습니다. 1. 조작이 간단하다. 사진처럼 청소기 봉의 끝단에 전원 버튼이 있어 간단하게 버튼을 눌러서 동작할 수 있습니다. 모드 선택도 단순히 길게 눌러서 변경이 가능합니다. 저와 같이 기능이 너무 많아 복잡한거 싫어하는 사람에게는 최적입니다. 2. 움직임이 자유롭다. 영상의 그림처럼 청소기 머리 부분의 회전이 부드럽게 움직이기 때문에 좁은 공간이나 벽면에 맞춰서 청소기를 움직일 수 있습니다. 3. 사용하지 않을 때 공간을 많이 차지하지 않음 위 사진은 ..

Tistory

주파수 분석장치의 이산 푸리에 변환(DFT, Discrete Fourier Transform)의 수식과 정의

목차 해당 포스트는 유투브 혁펜하임을 참조해서 작성하였습니다. 이산 푸리에 변환(DFT, Discrete Fourier Transform)이란? 제가 사용하는 분석장치가 주파수 변환해서 분석하는 장치인데 공업 수학 신호처리를 공부하게 된 근본적인 이유가 이번 포스트의 DFT(이산 푸리에 변환)과 FFT(Fast Fourier Transform)을 이해하기 위해서 였습니다. 앞 시간에 공부한 연속 시간 푸리에 변환(CTFT, Continuous Fourier Transform)은 연속(Continous)한 측정 입력 값을 연속적(Continous)인 출력 주파수로 변환하였습니다(https://scribblinganything.tistory.com/644). 그리고 다음으로 이산 시간 푸리에 변환(DTFT,..

Tistory

[Python] sklearn train_test_split 사용법, Syntax, 예제

목차 파이썬 sklearn train_test_split 란? Sklearn train_test_split 함수는 데이터(Dataset)를 트레이닝 데이터와 테스트 데이터로 아래와 같이 분류 해줍니다. Training data Test data 머신 러닝(Machine Learning) 알고리즘은 데이터를 분석해서 Performance를 높이는 방식입니다. 머신러닝 모델을 만들었다고 가정을 하면 이 모델이 정상적인 Performance를 보이는지 확인하는 작업이 필요 합니다. 사용자가 가지고 있는 데이터를 Training 과 Test 데이터로 분리 합니다. 그리고 Training 데이터를 사용해서 머신러닝 모델을 만듭니다. 그리고 해당 모델을 Test 데이터로 검증해봅니다. 이때 Sklearn train..

Tistory

DFT(이산 푸리에 변환) 매트릭스, FFT, Cyclic Convolution

목차 해당 포스트는 유투브 혁펜하임을 참조해서 작성하였습니다. DFT Matrix(이산 푸리에 변환 매트릭스) 앞서 포스트에서 DFT(Discrete Fourier Transform) 전개에 대해 알아보았습니다(https://scribblinganything.tistory.com/653). 위 수식(1)에서 3개의 포인트 입력 값을 넣고 3개의 출력 값을 받는 형식을 행렬(matrix)로 만들어 보겠습니다. 3개의 입출력은 k=0, 1, 2 로 생각할 수 있습니다. 수식(1)을 3개의 입출력으로 행렬로 표현하면 위와 같습니다. Orthogonal Matrix 는 Orthonormal 한 벡터(Vector) 값을 Column으로 가지는 행렬을 의미합니다. 즉, 크기는 1로 만들고 서로 직교성을 가지게 만들..

Tistory

[라즈베리파이]웹 제어로 LED켜고 끄기(web server, remote control, flask)

목차 Raspberry Pi 웹서버에서 LED 제어하기 이번에는 보드의 GPIO23번 핀에 LED를 연결하고 flask를 사용해서 웹서버를 구동합니다. 외부에 노트북을 사용해서 해당 웹서버(Web server)에 접속하고 브라우저에 나온 버튼을 클릭하여 LED를 켜고 끄는 시험을 해보겠습니다. 하드웨어 연결은 아래와 같이 합니다. 원래 GPIO23번 핀과 GND 사이에 1kohm 저항(Resistor)을 둬서 LED를 보호해야 하나 귀찮아서 다이렉트로 연결했습니다. LED를 오래 쓰실려면 꼭 저항을 직렬로 연결해주세요 전체 코드>> #!/usr/bin/python3 from flask import Flask, render_template_string import RPi.GPIO as GPIO GPIO.s..

Tistory

이산 시간 푸리에 시리즈란? 계수 값 유도하기(Discrete Time Fourier Series, ak, DTFS)

목차 해당 글은 유투브 혁펜하임을 참조해서 작성했습니다. 이산 시간 푸리에 시리즈란(Discrete Time Fourier Series, DTFS)? 앞서 연속 시간 푸리에 시리즈는 테일러 시리즈와 유사하게 사인 함수의 합으로 수식(1)과 같이 표현 됨을 알아보았습니다. 그리고 푸리에 시리즈의 계수(coefficient) 값은 오일러 함수가 서로 직교성(orthogonality)을 가지는 성질을 이용해서 내적을 통해 유도 해냈습니다https://scribblinganything.tistory.com/634. 이산 푸리에 시리즈(Discrete Time Fourier Series, DTFS)도 유사하게 구할 수 있습니다. 우선 DTFS를 표현하기 위해 주기를 표현 해야하는데 이산 도메인은 CTFS에서 ω를..

Tistory

이산 시간 푸리에 변환 수식 전개하기(Discrete Time Fourier Transform)

목차 해당 포스트는 유투브 혁펜하임을 참조해서 작성하였습니다. 이산 시간 푸리에 변환(DTFT) 수식 전개하기 앞장에서 이산 시간 푸리에 시리즈(Discrete Time Fourier Series, DTFS)의 수식 및 전개 방식에 대해 알아보았습니다. 이번에는 앞서 DTFS의 계수를 통해 DTFT를 구하는 방법에 대해 알아보겠습니다. 수식(1)은 푸리에 시리즈(Discrete Time Fourier Series, DTFS) 계수에서 1/N을 계수쪽으로 넘긴 수식입니다. 변환과 시리즈의 차이는 변환은 비주기(Non periodic, aperodic) 함수까지 신호를 처리할 수 있다는 점입니다. 즉, 수식(1)에서 N 값을 무한대로 보내 보겠습니다. 이때 발생하는 일과 조건을 아래와 같이 걸겠습니다. 1...

Tistory

[Python] sklearn 설치 및 기본 회귀 모델 예제 실습(Linear Regression)

목차 sklearn 설치 하기 저는 Visual Studio에서 파이썬 실습을 하고 있기 때문에 Visual Studio에서 sklearn을 설치하도록 하겠습니다. PS D:\Python\test05> pip install sklearn Requirement already satisfied: sklearn in c:\users\forgo\appdata\local\programs\python\python38\lib\site-packages (0.0.post1) [notice] A new release of pip available: 22.2.2 -> 22.3.1 [notice] To update, run: c:\users\forgo\appdata\local\programs\python\python38\py..

Tistory

공분산, 상관 계수, 정규화, Cross correlation, Convolution, Coherence란? 비교 분석(통계, 신호처리)

목차 공분산(Covariance)이란? 두 개의 확률 변수 사이에 상관성을 방향과 크기로 표현하는 방식입니다. 수식(1)과 같이 각 i 포인트에서 x와 y 값이 평균에서 떨어진 정도를 곱한 값입니다. x, y의 편차 정도가 비슷할 수록 곱에 의한 값이 커집니다. 그리고 편차의 방향이 하나는 양수 하나는 음수일 경우 방향은 반대로 표기 되고 같은 방향으로 진행되면 양수로 표기 됩니다. 예를 들어 한 학급에서 학생의 키와 몸무게를 측정하고 키와 몸무게의 공분산을 확인할 경우 전체 키 평균은 170cm이고 몸무게가 68kg 일때 A학생의 키가 175cm이고 몸무게가 70kg이면 (175-170) x (70-68) 을 계산해서 다른 학생들과 합해 주는 것이 공분산입니다. 위 그림(1)과 그림(2)를 비교하면 그..

Tistory

[푸리에 변환]미분, 적분 방정식 주파수 변환 문제 풀이

목차 해당 포스트는 유투브 혁펜하임을 참조해서 작성하였습니다. 미분식 dx(t)/dt 푸리에 변환(Fourier Transform)하기 미분식 dx(t)/dt를 푸리에 변환 수식으로 전개해서 푸는 방법 보다는 역푸리에변환(Inverse Fourier Transform)을 이용해서 쉽게 풀이할 수 있습니다. 수식(1)은 역푸리에 변환 수식입니다. 푸리에 변환은 1대1 변환이 가능하기 때문에 역푸리에 변환값을 구하면 변환 전 값을 알 수 있습니다. 수식(1)을 t에 대해 미분하겠습니다. 수식(1)의 우변은 오메가(ω)로 적분 되기 때문에 오일러 지수의 t 부분만 미분을 하면 됩니다. 수식(2)에서 빨간색 부분이 미분식에 1대1 매칭이므로 미분식에 대한 푸리에 변환 값은 jwX(w)가 됩니다. 미분식 dx(t..

Tistory

[Python]엑셀의 동일한 값 몇 개 인지 카운트 Pandas에서 쉽게 처리하기(판다스, 숫자, 텍스트, 중복 삭제)

목차 파이썬 Excel의 동일한 값 개수 세기 이번에는 제목 그대로 엑셀의 동일한 값의 개수를 Count 하는 방법에 대해 알아보겠습니다. 처음에는 엑셀(Excel)로 처리하려고 하였지만 방법을 찾기가 어려워서 파이썬(Python)의 판다스(Pandas) 한줄로 간단하게 해결 하였습니다. 우선 저에게 주어진 과제는 아래와 같습니다. 위와 같이 엑셀 파일에 지역명이 텍스트로 적혀있는데 동일 지역명을 검출하고 각 지역명이 몇개로 구성되었는지를 확인하는 것이었습니다. 위는 간략한 예제이고 실제 값은 몇 천개 정도 있었습니다. 위와 같은 과제는 사실 엑셀로 처리하기 쉽지 않습니다. 그래서 저는 간단하게 아래와 같이 파이썬을 사용해서 처리하였습니다. 전체 코드>> import pandas as pd df = pd..

Tistory

[라즈베리파이] GPIO란? LED 켜기&끄기, 핀맵(Pinmap, Pinout)

목차 Raspberry Pi GPIO란? 핀맵 라즈베리파이(Raspberry Pi)와 같은 임베디드(Embedded) 보드는 내부에 MCU 칩이 있고 칩을 프로 그램해서 외부 장치들로 부터 센서의 신호를 읽거나 제어를 위해 출력 신호를 보냅니다. 이때 입출력 신호를 주고 받을 수 있는 핀들을 GPIO(General Purpose Input/Output)이라고 합니다. 외부 장치와 입출력 신호를 주고 받는 핀 GPIO 핀 제어를 위해 임베디드 보드 내에 레지스터(Register)에 값을 입력하여 사용 일반적으로 LED 구동 전력 정도의 파워를 공급 제가 가지고 있는 라즈베리파이 4 보드의 핀맵(Pin Map)은 아래와 같습니다. Raspberry LED 켜기&끄기(하드웨어) 이번에는 앞서 핀아웃을 사용해서..

Tistory

[라즈베리파이] Polling과 Interrupt로 입력 신호 받기(폴링, 인터럽트)

Raspbeery Pi Polling으로 입력 신호 받기 폴링(Polling) 방식은 지속적으로 해당 입력 신호쪽에 값을 기다리면서 값이 들어올때 값을 처리하는 방식입니다. 그렇기 때문에 비효율적인 방식입니다. 아래는 폴링(Polling) 방식의 특징입니다. 폴링을 시행하면 보드의 다른 코드를 진행할 수 없음 지속적으로 모니터링하여서 전력을 상대적으로 많이 사용 실제 폴링으로 동작하는 예제 코드를 통해 쉽게 이해해 보도록 하겠습니다. 해당 코드는 라즈베리파이 보드에서 나가는 5V신호와 접지(Ground) 신호를 저항 10kohm으로 GPIO23번 핀에 연결했다가 떨어뜨렸다가 하는 식으로 마치 버튼을 동작하는 것처럼 조작해서 이를 카운트하는 코드 입니다. 카운트 값은 print로 보드에서 확인할 수 있습니..

Tistory

푸리에변환 수식의 의미, 사각파 변환, 신호와 주파수 간의 관계(Fourier Transformer, FT, Square function)

목차 해당 글은 유투브 혁펜하임을 참조하였습니다. 푸리에변환 수식의 의미, 신호와 주파수 간의 관계(Fourier Transformer, FT) 수식 1은 푸리에변환 수식(Equation)이고 수식 2는 인버스(역) 푸리에 변환입니다. 수식의 전개는 링크를 참조하시길 바랍니다(https://scribblinganything.tistory.com/635). 앞서 수식 전개에서 설명하였듯이 푸리에 변환은 1대 1 변환이 가능 합니다. 즉, 시계 함수(Time Domain Function)에서 주파수 함수(Frequency Domain Function)로 상호 변환이 가능 합니다. 이번 시간에는 수식1의 의미에 대해 알아보겠습니다. 수식3은 벡터 내적 공간 (Vector Inner Product Space)을..

Tistory

[Python] Pyside 레이아웃 설정, 수직, 수평, 겹치기, 그리드(Layout, Vertical, Horizontal, Stack, Grid)

목차 Pyside는 최신 Pyside6를 사용했음을 알려드립니다. 파이썬 Pyside 레이아웃 설정: 수직(Vertical) 이번 포스트에서는 레이아웃(Layout) 설정에 대해 알아보겠습니다. 수직 레이아웃은 QVBoxLayout 객체를 사용해서 설정합니다. 아래 전체 예제 코드와 결과를 확인하고 코드에 대한 설명을 드리도록 하겠습니다. 수직 배치 예제 코드>> import sys from PySide6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout from PySide6.QtGui import QPalette, QColor from PySide6.QtCore import QSize class Set_color(QWidget): de..

Tistory

푸리에 변환 테이블(Impulse, 델타함수, 컨볼루전, 컬레복소수, Duality) 증명

목차 해당 포스트는 유투브 혁펜하임을 참조해서 작성하였습니다. 이번 내용은 주로 사용하는 함수의 푸리에 변환 값을 확인해 보겠습니다. 푸리에 변환은 아래 수식(1)과 같습니다. 변환 방법은 링크를 참조하시면 됩니다(https://scribblinganything.tistory.com/635). 델타함수(Delta Function, Impulse Fuction) 푸리에 변환 δ(t) 함수는 위와 같이 0에서 임펄스(Impluse)인 신호 입니다. 이를 푸리에 변환(Fourier Transform)을 하게 되면 아래와 같습니다. 무한대 적분이라도 나머지 구간에서는 0이고 0에서 무한대 임펄스 적분이므로 해당 값은 1이 됩니다. 즉, 모든 주파영역에 1의 값을 가집니다. x(t-t0)함수 푸리에 변환 역푸리에..

Tistory

[Python] Pyside 메뉴바 만들기(Menu bar)

목차 파이썬 Pyside 메뉴바 만들기(Menu bar) GUI 프로그램을 보면 파일 저장, 불러오기 등 이러한 기능을 위쪽 상단에 메뉴 선택으로 만들어져 있음을 볼 수 있습니다. 이번 포스트는 Menu drop을 어떻게 만드는지를 알아보겠습니다. 우선 전체 코드로 결과와 함께 보여 드리고 주석으로 설명 드리겠습니다. 전체 코드>> from PySide6.QtWidgets import QMainWindow, QApplication, QLabel, QToolBar, QStatusBar, QCheckBox from PySide6.QtGui import QAction, QIcon, QKeySequence from PySide6.QtCore import Qt, QSize import sys class Qt_Ex..

Tistory

푸리에 시리즈 계수 ak 값 유도하고 의미 알아보기(Fourier Series, coefficient)

목차 해당 글은 유투브 혁펜하임을 참조해서 작성했습니다. 푸리에 시리즈 계수 ak 값 유도 앞서 푸리에 시리즈(Fourier Series)의 정의와 수식에 대해 알아보았습니다(https://scribblinganything.tistory.com/629). 푸리에 시리즈의 수식은 아래와 같습니다. 이번 포스트에서는 an의 값을 구하는 방법에 대해 알아보겠습니다. 여기서 a0는 시작점 상수 값으로 유도에는 필요가 없어서 삭제하고 진행하겠습니다. 식(1)은 x라는 T0 주기를 가지는 신호를 푸리에시리즈 변환을 통해서 표현했습니다. 식(1)을 오일러 지수와 내적(Inner Product) 해주겠습니다. 내적을 하는 이유는 내적 수식을 적용해서 결과 값으로 an(푸리에 계수)를 구할 수 있었기 때문입니다. 물론 ..

Tistory

푸리에 변환이란? 수식, 푸리에시리즈 비교(Fourier Transform, Series, Difference)

목차 해당 글은 유투브 혁펜하임을 참조하였습니다. 푸리에 변환(Fourier Transform)이란? 기존의 푸리에 시리즈(Fourier Series)는 주기(Period)를 가지는 신호를 사인파(주파수신호)의 합으로 표현한 것이었습니다. 푸리에 변환은 비주기 신호(Aperiodic)까지 확장해서 시간 함수를 주파수 함수로 변환해주는 것입니다. 특징으로는 푸리에 시리즈는 주기 값(T)에 관한 정의가 되지 않으면 1대1변환이 완벽하게 되지 않지만 푸리에 변환은 주기가 없는 신호까지 포함하기 때문에 1대1 변환이 가능합니다. 즉, 시간 함수를 주파수 함수 변환으로 이를 다시 역변환해서 시간 함수로 1 대 1 변환이 가능하다는 의미입니다. 비주기 신호까지 변환 가능 1대1 변환 가능 수학적으로 비주기 신호를 ..

Tistory

[Python] PySide 라벨 키보드 이벤트 (Lable, Keyboard, Event)

목차 파이썬 PySide 라벨 키보드 이벤트 (Lable, Keyboard, Event) 앞서 포스트에서 마우스(Mouse) 클릭 별 이벤트 발생 시 특정 함수나 기능을 실행시키는 방법에 대해 알아보았습니다. 이번 포스트에서는 라벨(Label)에 텍스트 입력(Text Input) 창을 만들고 텍스트에 입력창에 텍스트를 입력 시 해당 입력을 즉각적으로 표기하는 방법에 대해 알아보겠습니다. 예제를 통해 쉽게 알아보겠습니다. 예제 코드>> from PySide6.QtWidgets import QApplication, QMainWindow, QLabel, QLineEdit, QVBoxLayout, QWidget from PySide6.QtCore import QSize import sys class Qt_Ex(..

Tistory

[Python] PySide 위젯 종류 및 기능(Widget)

목차 파이썬 PySide 위젯 종류 및 기능(Widget) 이번 포스트는 각 종 체크 박스, 라벨, 버튼, 다이얼, 스위치 등 다양한 위젯에 대해 알아보겠습니다. 각 위쳇을 실제로 구현 해보고 기능에 대해 설명하도록 하겠습니다. 위젯의 상세 사용은 이 후 포스트에서 기록하도록 하겠습니다. 전체 구성 코드>> from PySide6.QtWidgets import ( QApplication, QCheckBox, QComboBox, QDateEdit, QDateTimeEdit, QDial, QDoubleSpinBox, QFontComboBox, QLabel, QLCDNumber, QLineEdit, QMainWindow, QProgressBar, QPushButton, QRadioButton, QSlider,..

Tistory

[Python] PySide 라벨 위치, 폰트, 글자 크기(Pont, Size, Type)

목차 파이썬 PySide 라벨 위치, 폰트, 글자 크기 이번 포스트에서는 파이썬의 PySide에서 라벨을 생성하고 라벨의 위치를 조정하는 방법과 폰트를 설정하는 방법과 폰트 사이지를 변경하는 방법에 대해 알아보겠습니다. 간단한 예제로 확인해보겠습니다. 아래 예제는 라벨에 텍스트를 입력하고 텍스트를 왼쪽 상단에 배치하고 폰트는 이탈리안으로 설정하고 크기는 11로 설정하였습니다. 예제 코드>> from PySide6.QtWidgets import QMainWindow, QApplication,QLabel from PySide6.QtCore import Qt, QSize import sys class Qt_Ex(QMainWindow): def __init__(self): super().__init__() se..

Tistory

푸리에 급수를 사용하는 이유 (고유함수(eigen function), Fourier series, 통신, 필터, LTI)

목차 해당 글은 유투브 혁펜하임 강의 내용을 참조로 작성하였습니다. 푸리에 급수와 고유 함수 푸리에 급수를 실제 우리 생활에 사용하는 주요 이유를 알기 위해서 우선 수학적인 수식으로 푸리에 급수(Fourier Series)와 고유함수(Eigen Function)과 시간불변 선형 시스템(Linear Time Invariant)에 대해 이해를 해야합니다. 앞서 공업수학 포스트들에서 푸리에 급수(Fourier Series)와 시불변 선형 시스템(Linear Time Invariant)에 대해서는 설명을 하였습니다. 푸리에 시리즈는 위와 같이 어떠한 주기함수 f를 Sinusoidal 주기 함수의 합으로 표현할 수 있습니다. 여기서 오일러 함수 e를 아래와 같이 시불변 선형 시스템(Linear Time Invar..

Tistory

[PySide6] PyQt란? Hello World 출력하기

목차 오늘 부터 Qt/PySide2를 공부해볼까 합니다. 감사합니다. PyQt란? PyQt 는 파이썬(Python)의 Qt GUI 프레임워크를 사용하는 라이브러리 입니다. Qt 자체는 C++ 베이스로 작성되었습니다. 하지만 파이썬에서 구동 시 C++ Compile 등에 소모되는 시간을 줄여서 빠르게 빌드되는 특징이 있습니다. 그리고 현재 Qt Designer라는 프로그램을 제공하고 있는데 해당 프로그램을 사용해서 시각적으로 빠르게 GUI를 제작할 수 있는 특징이 있습니다. 위 이미지는 Qt Designer의 이미지로 차후에는 위 프로그램을 사용해서 디자인할 계획 입니다. Hello World 출력하기 아래와 같이 pip install로 Qt/PySide2를 설치 해줍니다. pip install pysid..

Tistory

[Python] 파이썬 클래스 상속과 Super 사용 방법(Class)

목차 [Python] 파이썬 클래스 상속과 Super이란? 파이썬은 클래스(Class)간에 상속이 가능 합니다. 부모 클래스를 상속 받은 자식 클래스는 부모 클래스의 메소도(Method)를 사용할 수 있게 됩니다. super 함수는 자식 클래스와 객체 값을 받아서 부모 클래스의 함수에 접근하는 방식 입니다. 아래 예제를 통해 쉽게 이해해 보도록 하겠습니다. 예제 코드>> class F(): def __init__(self): print("Father") def how_old(self): print("I'm 55") class S(F): def __init__(self): print("Son") def who(self): print("I'm Son") a_var = S() a_var.how_old() a_..

Tistory

[Python] PySide 기본 동작 방식, QMainWindow 설정

목차 파이썬 PySide6 기본 동작 방식 PySide는 데스크탑용 Application GUI를 파이썬으로 만들어 주는 라이브러리입니다. 이번 포스트에서는 간단한 윈도우창(Windows)을 만들어 보고 PySide가 동작하는 방법에 대해 알아보겠습니다. PySide는 현재 6버전까지 나온 상태로 최신 버전을 사용해서 설계해 보겠습니다. 코드 실행 이전에 아래와 같이 PySide6를 설치 해줍니다. pip install pyside6 이제 아래 기본 코드를 실행하고 코드의 동작 방법에 대해 알아보겠습니다. PySide 기본 코드>> from PySide6.QtWidgets import QApplication, QWidget import sys app = QApplication(sys.argv) windo..

Tistory

[Python] PySide 마우스 이벤트 동작(Mouse event)

목차 파이썬 PySide 마우스 클릭 이벤트 앞서 포스트의 내용처럼 마우스(Mouse) 설정을 class 내에서 진행하도록 하겠습니다. 마우스 관련 내용 이 외에 이해가 안되신다면 PySide 카테고리의 다른 글들을 보시면 쉽게 이해할 수 있습니다. 마우스 이벤트(Mouse event)는 QPushButton 함수에서 관리합니다. 우선 간단하게 아래에 마우스 클릭 시에 Hello 메세지를 전달하는 코드를 작성해보겠습니다. 마우스가 클릭하는 경우 인터럽트(Interrupt)가 발생해서 PySide GUI가 반응합니다. 예제 코드>> from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton from PySide6.QtCore import QS..

Tistory

[Python] 파이썬 실행파일(exe) 만들기(Pyinstaller, Batch file)

목차 Pyinstaller 설치하기 파이썬으로 작성한 코드를 파이썬 툴이 없는 환경에서 실행파일 만으로 실행하고 싶을 때 사용하는 방법입니다. 우선 실행 파일을 만들기 위해서는 pyinstaller 라는 라이브러리 설치가 필요 합니다. 아래와 같이 설치를 진행합니다. pip install pyinstaller 실행 파일 만들기(Exe file generation) 이번에 설치는 앞서 작성한 GPS파일(nmea)을 cvs 파일로 변환하는 예제 파이썬 코드를 변환할 생각 입니다. 해당 코드를 링크를 참조 하십시오(https://scribblinganything.tistory.com/625) 설치는 아래와 같이 간단한 명령으로 완료 됩니다. pyinstaller 파이썬파일명 제가 작성한 파일명은 nmea_to..

Tistory

[Python] tkinter 로고(아이콘) 삭제하거나 바꾸기(logo, icon, remove, change)

목차 파이썬 tkinter 아이콘(icon) 변경하기 바로 예제 코드로 알아보겠습니다. 예제 코드>> from tkinter import * root = Tk() photo = PhotoImage(file = 'Famtech_Logo.png') root.wm_iconphoto(False, photo) root.title("FAMTECH") root.mainloop() 4번 라인: 변경할 아이콘 이미지를 가져 옵니다. 5번 라인: 아이콘 이미지를 적용합니다. 결과>> 파이썬 tkinter 아이콘(icon) 삭제하기 파이썬(Python) tkinter 아이콘을 삭제하는 작업은 번거롭습니다. 바로 삭제하는 방법은 없기 때문에 주변색에 투명하게 통과되는 이미지가 필요 합니다 해당 이미지는 아래 링크의 사이트에서..

Tistory

벡터, 내적공간 이란? (Vector, Inner product space)

목차 해당 포스트는 혁펜하임 유투브 강의를 기반으로 작성하였습니다. 벡터(Vector)란? 거리, 무게, 속력 등과 같이 크기 정보만을 가지는 1차원의 양(Quantity)을 스칼라(Scalar)라고 합니다. 벡터란 2 개 이상의 요소들로 어떠한 양을 가지는 의미 합니다. 아래와 같은 양은 벡터 입니다. 크기, 방향의 양을 가지는 벡터 : 힘, 모멘트, 변위, 속도, 가속도, 운동량, 열유동 실수, 복소수, 함수의 양을 가지는 벡터 : 좌표, 벡터 함수, 오일러 함수 대수적 성질을 공리로 사용한 벡터 공간 내의 대상을 추사화 : 무한 실수 수열,연속함수, 행렬(matrix) 벡터를 수식으로 정리하면 아래와 같습니다. Addition: Given two elements x, y in X, one can f..

Tistory

푸리에 급수란?(수식, 정의, Continuous Time Fourier Series)

목차 해당 내용은 혁펜하임의 신시 유투브를 통해 공부하고 작성하였습니다. 푸리에 급수란(Continuous Time Fourier Series)? 테일러 시리즈(Taylor Series)는 어떠한 함수(Function)를 다항식(Polynomial)의 합으로 표현한 시리즈 입니다. 수식으로 위와 같이 표현 됩니다. 푸리에 시리즈(Frouier Series)는 어떠한 주기 함수(Periodic Function)를 사인파(Sinusoids)의 합으로 표현하는 시리즈 입니다. 위와 같이 T0라는 주기를 가지는 함수는 T0에 매치되는 주파수 w0의 Harmonic 주파수로 구성됩니다. 하모닉(Harmonic) 주파수란 기본 주파수(Fundamental Frequency)의 정수배 되는 주파수 입니다. 예를 들어..

Tistory

내적, 외적이란?(Inner, Outer Product, vector, scalar)

목차 내적 이란?(Inner Product) 내적이란 곱한다는 의미 입니다. 벡터(Vector)에서 내적의 개념은 두 개의 벡터에서 방향이 일치하는 정도를 곱하는 것입니다. 위 그림에서 a와 b 벡터에서 a 벡터에[서 b벡터와 방향이 일치하는 부분은 a x cosΘ로 표현이 가능합니다. 이를 수식으로 표현하면 아래와 같습니다. 만일 두 벡터의 값이 직교성(Orthogonality)를 가지면 90도의 차이로 접점이 없다는 의미로 내적은 0이 됩니다. 그리고 최종 값은 스칼라(Scalar)로 나옵니다. 예를 들어 아래와 같은 벡터 값은 직교성을 가집니다. 즉 두 벡터의 내적은 0이 됩니다. 위와 같이 방향이 일치하는 벡터는 그냥 곱해서 3이 됩니다. 외적 이란?(Outer Product) 외적이란 내적과 달..

Tistory

[Python] flask와 sqlite 연동 검색(GET, response)

목차 [Python] flask와 sqlite 연동 검색 기본 준비 앞서 시간에는 flask와 sqlite를 연동(Connect)해서 flask의 웹서버를 가동해서 웹 브라우져(web browser)에서 sqlite의 데이터베이스(DB, Database)에 있는 내용을 모두 읽어 오는 예제를 시행해 보았습니다(https://scribblinganything.tistory.com/619). 동일 내용을 라즈베리파이(Raspberry Pi) 리눅스 환경에서도 시행한 예제가 있으니 궁금하시면 참조 하세요 이번 포스트에서는 REST API 를 중에 GET 을 사용해서 웹 페이지(Web Page)에 특정 id 값을 입력 하고 해당 id에 해당하는 데이터 베이스 값을 검색(Search) 하고 이를 페이지에 출력하는..

Tistory

[Python] flask와 sqlite 연동, 웹에 글 쓰고 데이터베이스에 넣기(GET, POST, form)

목차 [Python] flask와 sqlite 연동: Database Write 하기: 예제1 혹시 전체 코드에 대해 자세히 알고 싶으시면 sqlite 카테고리의 글을 처음부터 보시면 쉽게 따라 오실 수 있습니다. 앞서 포스트에서는 flask와 sqlite를 연동해서 데이터베이스의 값을 읽어 오거나 HTTP GET을 사용해서 특정 ID의 DB값을 읽어 오는 방법에 대해 알아 보았습니다(https://scribblinganything.tistory.com/623). 이번 포스트에서는 두가지 예제에 대해 실행하겠습니다. 특정 페이지 접속 시 파이썬 코드에 저장되어 있는 리스트 값을 데이터베이스에 올리기 웹페이지에 직접 데이터베이스에 올릴 값 입력해서 flask와 sqlite 연동으로 DB에 저장하기 우선 첫..

Tistory

[Python]GPS파일(nmea)에서 위도, 경도, 속도, 시간 정보 읽어서 csv에 저장하기(Latitude, Longitude, Speed, Time)

목차 GPS파일(nmea) Parsing 하기 예제 nmea파일>> $GPRMC,054900,A,3708.8127,N,12724.8667,E,000.0,252.0,311022,007.9,W*69 $PVRCT,56035757821,054900,311022*5F $GPGGA,054900,3708.8127,N,12724.8667,E,1,08,1.2,144.0,M,22.9,M,,*44 $GPGSA,A,3,10,12,15,22,23,24,25,,32,,,,2.0,1.2,1.6*33 $GPGSV,3,1,10,10,70,262,39,12,51,098,46,15,12,108,36,22,20,295,43*74 $GPGSV,3,2,10,23,56,181,40,24,36,052,41,25,48,156,43,31,00,000..

1 2 3 4 5 6 7