python
-
Probability Distributions in Python: 파이썬으로 확률 분포 분석하기Machine Learning/Statistics 2025. 4. 4. 19:00
데이터 분석을 할 때, 확률 분포를 이해하는 것은 매우 중요하다. 이번 글에서는 정규 분포를 이용하여 데이터를 모델링하는 방법과 Z-Score를 활용한 이상값 탐지를 다룬다. 특히, 특정 데이터가 정규 분포를 따르는지 확인하고, 경험적 법칙(Empirical Rule)을 통해 데이터를 해석하는 방법을 설명할 것이다. 마지막으로, Z-Score를 활용하여 이상값을 찾는 방법을 알아본다. 라이브러리 불러오기먼저 필요한 라이브러리를 불러온다.pandas: 데이터프레임 처리numpy: 수학 연산matplotlib.pyplot: 시각화scipy.stats: 통계 분석import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom scipy impo..
-
지도학습 | 나이브 베이즈 분류기 (Naive Bayes Classification)Machine Learning/ML with Python Library 2024. 4. 3. 22:05
Naive Bayes Classification는 Linear Model과 매우 유사하다. Logistic Regression이나 LinearSVC같은 Linear Classification보다 훈련 속도가 바른 편이지만, 대신 일반화(Generalization) 성능이 조금 뒤진다. 일반화(Generalization)는 모델이 훈련 데이터에 대해서뿐만 아니라, 본 적 없는 새로운 데이터에 대해 얼마나 잘 예측하는지를 나타내는 성능의 척도이다. 나이브 베이즈 분류기는 각 특성을 개별로 취급해서 파라미터를 학습 시키고, 클래스별 통계를 단순하게 취합한다. scikit-learn에서는 GaussianNB, BernoulliNB, MultinomialNB 이렇게 세가지다. GaussianNB는 연속적인 어떤 ..
-
지도학습 | 선형모델의 장단점과 매개변수Machine Learning/ML with Python Library 2024. 4. 2. 22:26
선형 모델의 주 매개변수는 Regression 모델에서는 alpha였고, Classification Model이었던 LinearSVC와 LogisticRegression에서는 C였다. alpha값이 클수록, C값이 작을수록 모델은 단순해진다. 특히, Regression 모델에서 이 매개변수를 조정하는 일은 매우 중요하다. 또한 규제를 L1, L2중 어떤것을 사용할지 정해햐아하는데, 중요한 특성이 많이 없을땐 L1을, 그렇지 않으면 L2를 사용한다. L1은 몇가지 특성만 사용하기 때문에, 해당 모델에 중요한 특성과 효과를 이해하기 쉽다. Linear 모델은 학습 속도도 예측도 빠르다. 또한, 예측이 어떻게 만들어 지는지 비교적 쉽게 이해할 수 있다. Linear 모델은 특성이 많을 때 잘 작동하는데, 다른..
-
지도학습 | 리지 회귀 (Ridge Regression)Machine Learning/ML with Python Library 2024. 3. 30. 14:02
리지회귀는 기본 선형 회귀 방식 대신 가장 널리 쓰이는 모델이다. 리지 회귀에서 가중치, weight(w) 서택은 훈련 데이터를 잘 예측하기 뿐만 아니라, 이 weight의 절대값을 가능한 작게 만드는 목적을 갖고 모델을 만든다. 다시 말해, 모든 w가 0에 가깝게 되길 원한다. 즉, 모든 특성이 주는 영향을 최소한으로 만드는 것이다. 이런 제약을 규제, regulation이라고 한다. 규제란, 과대 적합이 되지 않도록 모델을 강제로 제한한다는 의미이다. Ridge Regression에 사용하는 규제 방식을 L2 Regulation이라고 한다. Ridge and Alpha Ridge Regression은 linear_model.Ridge에 구현되어 있다. 코드로 확인해보자. 먼저, 필요한 라이브러리 설치..
-
지도학습 | K-NN Regression (최근접 이웃 회귀)Machine Learning/ML with Python Library 2024. 3. 24. 21:05
KNN을 이용해서 Regression문제도 풀어낼 수 있다. KNN을 이용하게 되면, 예측값은 가장 가까운 이웃의 타겟값이 된다. !pip install mglearn import mglearn mglearn.plots.plot_knn_regression(n_neighbors=1) 이렇게 하면, 가장 가까운 이웃 1개를 골라서 그것이 결과값이 된다. 결과는 다음과 같았다. 각 인풋(test data)별로, 가장 가까운 데이터(training data/target)을 찾아내고, 그 타겟을 결과값으로(test prediction) 나타내었다. 여기서 K-NN은, 1-NN이었는데, 코드를 조금 수정해서 K를 1보다 큰 숫자를 사용해 회귀분석을 할 수 있다. mglearn.plots.plot_knn_regres..
-
Forward Propagation in NumPy | Advanced Learning AlgorithmMachine Learning/Stanford ML Specialization 2024. 2. 9. 22:39
Coursera Machine Learning Specialization > Supervised Machine Learning: Advanced Learning Algorithms > Neural Network Intuition 이전에 했던대로, 모든것을 Hard Coding하게 되면, 코드도 길어지고 재사용도 힘들다. 그렇다면 NumPy를 이용해 조금 더 general한 방식으로 코드를 짠다면 어떤식일까? 먼저, 사용할 데이터들을 생각해보자. # W 값들이 정의되어있는 Matrix. 여기선 2 x 3 matrix라고 가정하자. # 1, 2는 w1, -3, 4는 w2, 그리고 5, -6은 w3이다. W = np.array([ [1, -3, 5] [2, 4, -6]]) # Bias(b) 값도 1D Arra..
-
Forward Propagation in a Single Layer | Advanced Learning AlgorithmMachine Learning/Stanford ML Specialization 2024. 2. 9. 19:49
Coursera Machine Learning Specialization > Supervised Machine Learning: Advanced Learning Algorithms > Neural Network Intuition 만약, TensorFlow나 PyTorch를 사용하지 않고, Forward Propagation을 Python에서 처음부터 구연해야한다면 어떻게 해야할까? 그 라이브러리보다 더 나은 Framework를 생각해 낸다면? 결국 이러한 것들을 처음부터 구현해야 할 수 도 있다. Coffee Rosting Model을 예시로 살펴보자. layer마다 각 뉴런에는 weight과 bias값이 있다. 각 뉴런은 아래와 같은 연산이 일어난다. 그렇다면 이 연산을 python으로 구현하면 어떻게..
-
ML Intro | Iris Analysis - PredictionMachine Learning/ML with Python Library 2024. 1. 27. 21:25
이제 만든 모델을 이용해서 새 데이터에 대해 예측을 해보자. 아래와 같은 모양의 꽃의 종류는 무엇일까? 꽃잎(petal): - 길이: 5cm - 폭: 2.9cm 꽃받침(sepal): - 길이: 1cm - 폭: 0.2cm 이 측정값을 NumPy 배열로 만들어보자. 샘플의 수는 1개이고, 특성의 수는 모델에 훈련된 Feature 갯수와 같이 4개이기 떄문에, 1 * 4 크기의 NumPy 배열로 만들어보자. import numpy as np x_new = np.array([[5, 2.9, 1, 0.2]]) print("x_new.shape", x_new.shape) x_new.shape (1, 4) iris 측정값이 NumPy 배열에 행으로 들어갔다. scikit-learn은 항상 대이터가 2차원 배열일 것으..