[ML 04-1] 로지스틱 회귀
·
AI/혼공파 머신러닝+딥러닝
어떤 박스에 들어간 생선의 크기, 무게 등이 주어졌을 때 7개 생선에 대한 확률을 출력하려는 문제를 풀려고 한다. 이에 대해 k-최근접 이웃은 주변 이웃을 찾아주니까 이웃의 클래스 비율을 확률이라고 출력하면 되지않을까?라는 아이디어를 활용할 것이다. import pandas as pd fish = pd.read_csv('https://bit.ly/fish_csv_data') fish.head() 이 데이터 프레임에서 Species열을 타깃(정답값)으로 만들고 나머지 5개 열은 입력 데이터로 사용할 것이다([3]실행). 그리고 [5]실행 부분에서 훈련 세트와 테스트 세트로 나눈다. StandardScaler클래스를 사용해 훈련 세트와 테스트 세트를 표준화 전처리해주고 훈련 세트의 통계 값으로 테스트 세트도..
[ML 03-3] 특성공학과 규제 - 릿지(Ridge), 라쏘(Lasso)
·
AI/혼공파 머신러닝+딥러닝
이전 글에서 특성을 길이만 보니 일직선으로만 그래프가 그려서 성능이 좋지않아 길이를 제곱한 특성도 넣었더니 더 잘 예측하는 것을 확인할 수 있었다. 근데 여전히 훈련 셋보다 테스트 셋의 점수가 높았다.(underfitting) 이 문제를 해결하려면 제곱보다 더 고차항을 넣어야 할 것 같은데 얼만큼 더 고차항을 넣어야 할지모르고 수동으로 이렇게 고차항을 넣기도 힘들다. 그래서 가지고 있는 특성끼리를 서로 곱해서 또 다른 새로운 특성을 만드는 작업을 할 수 있다. 이 예제에서는 농어의 길이뿐만 아니라 농어의 높이와 두께도 함께 사용햇다. 그리고 3개의 특성을 각각 제곱하여 추가하고 각 특성을 서로 곱해서 또 다른 특성을 만들었다. 즉 '농어 길이 x 농어 높이'를 새로운 특성으로 만들 것이다. 이렇게 기존의..
[ML] 로지스틱 회귀(Logistic Regression)
·
AI/ML
일상 속 풀고자하는 많은 문제 중에서는 두 개의 선택지 중에서 정답을 고르는 문제가 많습니다. 예를 들어 시험 점수가 합격인지 불합격인지 정상메일인지 스팸메일인지 이렇게 둘 중 하나를 결정하는 문제를 이진 분류(Binary Classification)라고 합니다. 그리고 이진 분류를 풀기 위한 대표적인 알고리즘으로 로지스틱 회귀(Logistic Regression)가 있습니다. 로지스틱 회귀는 알고리즘의 이름은 회귀이지만 실제로는 분류(Classification) 작업에 사용할 수 있습니다. 1. 이진 분류(Binary Classification) 학생들이 시험 성적에 따라서 합격, 불합격이 기재된 데이터가 있다고 가정해봅시다. 시험 성적이 x라면, 합불 결과는 y입니다. 이 시험의 커트라인은 공개되지 ..
[ML] 커스텀 데이터셋(Custom Dataset)
·
AI/ML
1. 커스텀 데이터셋(Custom Dataset) 앞서 사용했던 torch.utils.data.Dataset과 torch.utils.data.DataLoader 외에 torch.utils.data.Dataset을 상속받아 직접 커스텀 데이터셋(Custom Dataset)을 만드는 경우도 있습니다. torch.utils.data.Dataset은 파이토치에서 데이터셋을 제공하는 추상 클래스입니다. Dataset을 상속받아 다음 메소드들을 오버라이드 하여 커스텀 데이터셋을 만들어보겠습니다. 커스텀 데이터셋을 만들 때, 일단 가장 기본적인 뼈대는 아래와 같습니다. 여기서 필요한 기본적인 define은 3개입니다. class CustomDataset(torch.utils.data.Dataset): def __in..
[ML] 미니 배치와 데이터 로드(Mini Batch and Data Load)
·
AI/ML
1. 미니 배치와 배치 크기(Mini Batch and Batch Size) 다중 선형 회귀에서 사용했던 데이터를 상기해봅시다. x_train = torch.FloatTensor([[73, 80, 75], [93, 88, 93], [89, 91, 90], [96, 98, 100], [73, 66, 70]]) y_train = torch.FloatTensor([[152], [185], [180], [196], [142]]) 위 데이터의 샘플의 개수는 5개입니다. 전체 데이터를 하나의 행렬로 선언하여 전체 데이터에 대해서 경사 하강법을 수행하여 학습할 수 있습니다. 그런데 위 데이터는 현업에서 다루게 되는 방대한 양의 데이터에 비하면 굉장히 적은 양입니다. 만약, 데이터가 수십만개 이상이라면 전체 데이터에 ..
[KNN, ML 03-2] 선형회귀(Linear Regression)
·
AI/혼공파 머신러닝+딥러닝
분류 (classification) - 몇 개의 클래스 중 하나를 분류 회귀 (regression) - 임의의 어떤 숫자를 예측 이전 글에서는 분류문제를 다뤘습니다. 이번엔 회귀문제를 다뤄보려하는데 회귀는 클래스 중 하나로 분류하는 것이 아니라 임의의 어떤 숫자를 예측하는 문제입니다. k-최근접 이웃 회귀의 방식에 대해 설명해보겠습니다. 예측하려는 샘플에 가장 가까운 샘플 k개를 선택 하여 이 수치들의 평균을 구하는 것입니다. import numpy as np perch_length = np.array( [8.4, 13.7, 15.0, 16.2, 17.4, 18.0, 18.7, 19.0, 19.6, 20.0, 21.0, 21.0, 21.0, 21.3, 22.0, 22.0, 22.0, 22.0, 22.0,..
[KNN 03-1] k-최근접 이웃 알고리즘 (데이터 전처리)
·
AI/혼공파 머신러닝+딥러닝
도미와 빙어를 구분하는 KNN모델을 만들려고 한다. 그런데 데이터의 형태에 따라 성능이 다르게 나오는 것을 다음의 과정들을 통해 알고 어떻게 성능을 높여 왔는지에 대해 작성할 것이다. fish_length = [25.4, 26.3, 26.5, 29.0, 29.0, 29.7, 29.7, 30.0, 30.0, 30.7, 31.0, 31.0, 31.5, 32.0, 32.0, 32.0, 33.0, 33.0, 33.5, 33.5, 34.0, 34.0, 34.5, 35.0, 35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.5, 38.5, 39.5, 41.0, 41.0, 9.8, 10.5, 10.6, 11.0, 11.2, 11.3, 11.8, 11.8, 12.0, 12.2, 12.4, 13.0,..
[ML] nn.Module로 구현하는 선형 회귀
·
AI/ML
이번에는 파이토치에서 이미 구현되어져 제공되고 있는 함수들을 불러오는 것으로 더 쉽게 선형 회귀 모델을 구현해보겠습니다. 예를 들어 파이토치에서는 선형 회귀 모델이 nn.Linear()라는 함수로, 또 평균 제곱오차가 nn.functional.mse_loss()라는 함수로 구현되어져 있습니다. 아래는 이번 실습에서 사용할 두 함수의 사용 예제를 간단히 보여줍니다. import torch.nn as nn model = nn.Linear(input_dim, output_dim) import torch.nn.functional as F cost = F.mse_loss(prediction, y_train) 1. 단순 선형 회귀 구현하기 우선 필요한 도구들을 임포트하고 데이터를 선언합니다. import torch..
[pytorch] 파이토치 입문
·
AI/ML
스칼라(0D텐서) -> 벡터(1D텐서) -> 매트릭스(2D텐서) -> 텐서 .dim : []로 둘러싸인 층을 의미, 얼마나 둘러싸여있는지, 축을 의미한다. .shape : 텐서 형태가 어떤지 알려준다. scala (0D 텐서) scala 는 numpy 로 만들 수 있음 import numpy as np data1 = np.array(10) print (data1, data1.ndim, data1.shape) # ndim 은 axis 축, shape 은 행렬의 차원을 의미함​ 10 0 () vector (1D 텐서) vector 부터는 pytorch 의 tensor 로 만들 수 있음 shape 은 torch.Size([3]) 와 같이 표현됨 import torch data1 = torch.FloatTens..
[ML] 다중 선형 회귀(Multivariable Linear regression)
·
AI/ML
앞서 배운 x가 1개인 선형 회귀를 단순 선형 회귀(Simple Linear Regression)이라고 합니다. 이번 챕터에서는 다수의 x로부터 y를 예측하는 다중 선형 회귀(Multivariable Linear Regression)에 대해서 이해합니다. 1. 데이터에 대한 이해(Data Definition) 2. 파이토치로 구현하기 우선 필요한 도구들을 임포트하고 랜덤 시드를 고정합니다. import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim torch.manual_seed(1) 이제 훈련 데이터를 선언해보겠습니다. # 훈련 데이터 x1_train = torch.FloatTensor([[7..
doocong22
'AI' 카테고리의 글 목록 (4 Page)