반응형

AI/Machine Learning 12

[Python] 머신러닝-11 점진적 학습을 위한 확률적 경사하강법 / 확률적 경사하강법이란?

이번에는 새롭게 확률적 경사하강법을 공부해보려고 한다. 이것은 딥러닝에서도 중요하게 자리잡고있는 개념이기 때문에 헷깔리면 다시 한번 보도록 하자. 1). 데이터 불러오기 2). 훈련세트와 테스트 세트 구분하기 3). 스케일 변환 여기까지는 전과 동일하다 4). 경사하강법 분류용 클래스인 SGDCassifier를 사용한다. loss = 'log' : 로지스틱 손실함수를 적용 max_iter = 훈련횟수지정 ==> 결과 : 훈련세트와 테스트세트의 정확도가 낮게 나온것을 확인 할 수있다. 예측하건데, 우리가 지정한 10번의 훈련횟수가 적었을수 도있다. 그렇다면 우리가 훈련을 추가적으로 진행하고자하면, 다시 훈련을 처음부터 해야되는가 라는 생각이들것이다. 하지만 경사하강법은 점진적 학습이 가능하여 추가적으로 훈..

[Python] 머신러닝 기초-10 Logistic Regression 과 이진분류 / 다중분류 활용

자 지난 게시글에 이어 이제 로지스틱 회귀로 이진분류/다중분류를 해보려고한다. 첫번째 이진분류 우리는 이진 분류를 통해 bream과 smelt인것만 골라내서 둘중에 어떤것에 더 높은 확률을 보이는지 확인해보자. 이진 분류를 사용하여 Bream | (또는) Smelt일때의 index들을 추출해 냈다. 그다음 훈련세트를 다시 만들어주었고, 해당 데이터를 로지스틱 회귀를 적용시켜보았다. 우리가 만든 모델이 예상한 데이터는 [Bream, Smelt, Bream, Bream, Bream,Smelt]이다. 이 예측값이 나온 이유 = 확률에 대해 확인하기 위해 lr.predict_proba()함수를 사용했다. ==> 결과 : 1열 : Bream과 2열 : Smelt 로 보았을때 어떤 확률로 예측데이터가 나온지 알수있..

[Python] 머신러닝 기초-9 로지스틱 회귀를 통해 물고기 분류 예제 / 로지스틱 회귀란?

생선의 크기, 무게, 높이 등 이 주어졌을때 7개의 생선에 대한 확률을 구하는 문제 데이터준비 물고기 종류를 타겟으로 잡는다. 물고기종류에 대한 확률을 내는 과제이니, 확인! 훈련세트와 테스트세트를 만든다. 각 데이터세틀를 표준화 전처리한다. =>Scaling K-최근접 이웃 분류기를 사용하여 정확도를 확인한다. 이웃의 개수는 대충 3개로 지정했다. 여기서 target 데이터에는 7가지 물고기 종류가 들어있다는것을 잊으면 안됀다.! 이렇게 여러개의 target / 2개이상의 클래스가 포함된 문제를 다중분류라고 한다. target 확인 = kn.classes_ 테스트세트 중 처음 5개의 테스트input에 대한 target(물고기종류) 예측 테스트 세트에서 뽑아낸 5개 샘플의 각 클래스별 확률을 추출해보자 ..

[Python] 머신러닝 기초-8 복습하고 가자 - > Ridge Regression Example 쭉 쳐보기

import numpy as np import pandas as pd df = pd.read_csv('https://bit.ly/perch_csv') perch_numpy = np.array(df) perch_weight = np.array([5.9, 32.0, 40.0, 51.5, 70.0, 100.0, 78.0, 80.0, 85.0, 85.0, 110.0, 115.0, 125.0, 130.0, 120.0, 120.0, 130.0, 135.0, 110.0, 130.0, 150.0, 145.0, 150.0, 170.0, 225.0, 145.0, 188.0, 180.0, 197.0, 218.0, 300.0, 260.0, 265.0, 250.0, 250.0, 300.0, 320.0, 514.0, 556.0,..

[Python] 머신러닝 기초-7 Ridge Regression 과 Lasso Regression을 통한 연습 / Ridge란? / Lasso란?

지난 시간에 이어 릿지회귀와 라쏘회귀를 공부해보도록 하자. 릿지회귀, 라쏘회귀란? 선형회귀 모델에 규제를 합쳐서 만든 모델 릿지 계수를 제곱한 값을 기준으로 규제 적용 라쏘 계수의 절대값을 기준으로 규제 적용 일반적으로는 릿지를 더 선호한다고한다. 1).릿지 릿지회귀를 적용하여 해당 모델의 정확도를 확인한다. 지난 시간에 -144로 테스트 세트의 정확도가 이상하게 나왔던것 기억해야한다. 상황 = 특성의 갯수(degree)를 5로 주었을때 훈련 세트 정확도는 99.999가 나왔는데, 테스트세트는 음수가 나왔었다. 이로써 많은 특성을 사용하여 테스트를 해도 문제없이(과대적합)되지않고 괜찮은 성능을 내고있는것을 확인 할 수있다. 릿지와 라쏘 모델을 사용할때 우리는 임의로 규제의 양을 조절할 수 있는데, 우리가..

[Python] 머신러닝 기초-6 다중회귀(Multiple Regression) 알고리즘을 통한 연습 / 다중회귀란?

비전공에 독학이라 접근성이 부족하지만... 간단하게 이해할 수 있도록 써놓으려고한다... 이전 시간 다항회귀에 이어 조금 더 복잡한 모델을 구현해보고자 한다. 이는 아직 우리가 개발한 모델이 부족함에 있어 더 많은 발전을 이룰 수 있도록 도와줄것이다.. 이때까지 공부했던것들의 흐름을 보면 당연히 3차원이 나올것이라고 예상했는데, 역시나 3차원이 나온다. 다중회귀란? 여러개의 특성을 이용한 선형회귀를 다중회귀라고 한다 쉽게 특성을 하나 이상 더 만들어서 선형회귀를 구현한 1차원 더 높아진 선형회귀이다. 예를들어 다항회귀는 y = ax²+bx+c로 y =무게 , x= 길이 두가지 특성만 사용했지만, 길이 x 무게라는 3번째 특성을 만들어내어 사용하는것이다. 우선 데이터를 가져올건데, Pandas를 이용하여 ..

[Python] 머신러닝 기초-5 선형회귀(Linear Regression) 알고리즘을 통한 연습 / 선형회귀란? 다항회귀란?

지금까지는 K-최근접 알고리즘을 통해 모델을 만들었고, 그 모델로 예측을 해보았다. 하지만 어느일정 길이를 넘어서면 예측되는 무게가 다 똑같이 나오는것을 봤을것이다. 이것은 가장 근접한 클래스의 평균을 내서 주는 최근접 알고리즘의 엄청난 단점이다. 이런점을 해결하기 위해 가장 보편적으로 사용하는것이 선형회귀 알고리즘이다. 선형회귀란? - 데이터를 가장 잘 표현할수 있는 직선을 구하는 알고리즘 우선 코드로 선형회귀 알고리즘을 한번 적용시켜 보자 1). 데이터 형변환 2). 선형회귀 알고리즘 사용하여 필요한 값을 구한다. 일차방정식 y = ax+b 여기서 선형회귀를 사용할때 종종 H(x) =Wx+b를 사용해서 표현했는데, 나도 이걸로 표현하겠다. Linear Resgression을 사용하면 그 객체 안에 W..

[Python] 머신러닝 기초-4 K-Neighbors (최근접)알고리즘을 통한 연습- 회귀

분류 : 샘플을 몇개의 클래스 중 한가지로 분류(확인 해내는것) 회귀 : 기존 데이터를 통해 임의의 데이터를 예측하는것 분류 문제를 통달했으니, 회귀 문제로 넘어가보자. 바나나의 길이에 따른 바나나의 무게를 예측하는 코드를 한번 작성해보자 1). 바나나 길이와 무게 데이터를 정의한다. 그래프로 확인 2). 사이킷런을 사용하려면 데이터의 형태가 2차원이어야함으로, 우리가 가지고있는 데이터를 2차원 데이터로 변환한다. Train set = 42개의 데이터 Test set = 14개의 데이터 3). K-최근접알고리즘 적용 및 훈련 => 정확도 확인 테스트세트와 훈련세트에대한 정확도가 아주 높게 나왔다. 하지만 회귀에서는 분류와는 다르게 정확한 예측 숫자를 맞추는것은 불가능 하기 때문에, 결정계수라는 것으로 평..

[Python] 머신러닝 기초-3 K-Neighbors (최근접)알고리즘을 통한 연습- 분류

자 이어서 조금 더 나은 코드를 향해 달려가보자. 공부 순서는 점진적으로 발전할 예정이다. 1). Numpy 함수 이용해보기 np.column_stack() = 리스트 여러개의 열 샘플 한개씩을 연결하여 붙여준다. np.concatenate() = 배열을 이어준다. np.ones(N) = 정수N개만큼 1로 채운 배열을 만든다. np.zeros(N) = 정수N개만큼 0으로 채운 배열을 만든다. fish_data를 찍어보면... fish_target을 찍어보면.. 2). 사이킷런으로 테스트세트와 훈련세트 나누기 3). KNeighborsClassifier() 훈련 => 결과 : 100%의 정확도 4). 훈련된 모델에 값을 넣어 예측해보자 => 결과 : 0을 반환 => 의미 : 25,150 (무게,길이)인 데..

[Python] 머신러닝 기초-2 K-Neighbors (최근접)알고리즘을 통한 연습- 분류

이어서 훈련세트와 테스트세트를 나누어 훈련을 시키고, 테스트를 하는 방식을 공부해보자 코드는 기존이랑 많이 달라지지 않지만, Numpy를 이용해서 데이터를 구분, Shuffle 하며 코드를 짜볼 것이다. 1). 데이터 준비 2). Numpy객체로 변환 3). Index를 만든 후 순서 섞기 => 기존 bream 과 smelt데이터는 섞여있지 않고 bream먼저+ smelt로 데이터가 형성되어있다 하지만 테스트세트와 훈련세트를 만들려면 데이터들이 무작위로 섞여있어야 하는것은 당연하다. 그러므로 데이터를 섞어 Indexing하여 input과 target의 index를 맞춰주는 과정이다. 4). 테스트세트와 훈련 세트를 따로 만들어주자 5). 훈련 및 예측 100%확률의 훈련 결과를 얻고, 예측값과 정답을 비..

반응형