반응형

AI 22

[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%확률의 훈련 결과를 얻고, 예측값과 정답을 비..

[Python] 머신러닝 기초-1 Scikit-learn을 사용하여 물고기 예측

물고기 종류 2가지의 데이터(무게,길이)를 학습시키고, 새로운 무게,길이 데이터를 입력했을 때 결과 예측하는 코드를 짜보자. 환경 : Colab 1). 물고기 데이터 입력 2). matplotlib를 통해 그래프로 표현 3). 리스트 두개를 하나로 합친다. bream 데이터 + smelt 데이터 => 이유? 학습시킬 데이터를 하나로 묶어 표현하기 위함 4). 사이킷 런 패키지를 사용하기 위해 length와 weight를 2차원 데이터로 묶어준다. 5). 우리는 찾고싶은 데이터를 기준으로 1, 나머지는 0으로 기준을 잡을 것이다. 1,0으로 구분하는것은 컴퓨터 기준으로 표현하기 위함이다. 6). KNeightborsClassifiler 사용 k-최근접 알고리즘으로, 입력된 데이터를 다른 데이터들에 대입하여..

[Tensorflow2.x] CheckPoint란?

Tensorflow2.x를 사용하지만 1점대를 사용하며 공부하고 있어서 이점 참고하길 바란다. 1). ChechPoint란? Tensorflow 로 학습시킨 딥러닝 모델을 저장하는 방법중 하나로 Checkpoint 을 이용하는 방법이 있다. Checkpoint 는 학습된 모델의 Variable 값을 저장하는 파일이다. Checkpoint는 개발자가 딥러닝 모델을 구현해놓은것을 저장해 놓고 로드해서 사용하는것으로 생각하면 된다. 2). CheckPoint 저장방법 #Checkpoint 저장 saver = tf.train.Saver() saver.save(sess,"D:\\DATA\\test.cpkt") #Checkpoint 불러와서 저장한다. save_path = "D:\\DATA\\baechooe.cpk..

[Tensorflow2.x] Linear Regression(선형회귀) 란?

데이터를 해석하여 다음번에 어떤 일이 발생할지 예측하기 위해 머신러닝을 사용한다. 이 때 활용할 수 있는 가장 간단한 모델은 바로 직선이라고한다. 이때 데이터를 가장 잘 대표하는 1개의 직선은 Linear Regression이다. Linear Regression 알고리즘은 학습 데이터가 주어졌을 때, Cost 값을 최소화 시켜주는 Hypothesis의 Parameter(W, b)를 찾는 알고리즘이다 1). Poinsts and Lines (점,선) 하나의 직선은 slope과 intercept에 의해 정의될 수 있다. 수식 y = mx +b 여기서 m이 slope이고, b가 intercept이다. Linear Regression을 수행하는 최종 목표는 입력한 데이터들을 가장 잘 표현할 수있는 m과 b를 찾..

[Tensorflow2.x / Keras] 손글씨 숫자 분류를 위한 신경망 만들기

Keras란? 파이썬 딥러닝 라이브러리 컨볼루션 신경망, 순환 신경망, 그리고 둘의 조합까지 모두 지원 CPU와 GPU 둘다 매끄럽게 실행 측정항목 모델의 성능을 평가하는데 사용되는 측정항목함수는 모델이 컴파일 될때 metrics 매개변수를 통해 공급됨 측정 항목을 평가한 결과는 모델을 학습시키는데 사용되지 않는다. 어느 손실함수나 측정항목 함수로 사용가능 MNIST Dataset을 이용하여 데이터를 가져와서 사용하였다. 손글씨 이미지 여러개와 숫자 여러개를 조합해서 훈련시키는 방식으로, 훈련을 시키고난뒤에 일치하는 숫자를 출력하는 형식 결과 : 이 데이터셋에서 5번의 훈련으로 약 98% 정도의 정확도를 만들어냈다. 어려우니 코드를 자세하게 설명해놔야겠다. 1). 데이터 범위설정 손글씨 숫자 이미지 데이..

[Python] 머신러닝 Scikit-learn(사이킷런) 사용하기

설치 : conda install scikit-learn 으로 Anaconda에서 설치 scikit-learn 이란? scikit-learn이란 python을 대표하는 머신러닝 라이브러리이다. '사이킷런'이라고 부르기도 한다. scikit-learn은 오픈 소스로 공개되어 있으며, 개인, 비즈니스 관계없이 누구나 무료로 사용가능하다. scikit-learn은 현재도 활용하여 개발이 이루어지고 있으며, 인터넷 상에서 정보를 찾기에도 싶다. 많은 머신러닝 알고리즘이 구현되어 있는데, 어떤 알고리즘도 같은 방식으로 이용이 가능하다. 또, 샘플 데이터 셋(토이 데이터 셋)이 부속되어 있으므로, 설치하여 바로 기계 학습을 시험해볼 수 있다. 그러므로 초심자가 기계학습을 배우기 시작할 때 적합한 라이브러리라고 말한..

[Tensorflow2.x] numpy란? -1

Java 개발자였던 내가 Tensorflow를 갑자기 공부하다보니 모든것이 모르는 점 투성이다... 우선 아래 코드를 실행하다가 numpy라는게 나왔는데, 무엇인지 알아보고 가야 속시원하지? v.read_value().numpy() => 1.0 이 나온다. 자 여기서 numpy라는 개념이 나오는데, numpy에 대해 알아보자 Numpy란? Python 패키지 Scientific computing 을 위한 다양한 기능을 제공하는데, Matrix를 쉽게 다룰 수 있도록 도와준다. 연산과 조작등을 맡아서 해주는 기본중에 기본인 아이.. 1). Matrix Create 1-1). [List로 Matrix 생성] 1-2). [특정값으로 Matrix 생성] 1-3). [무작위값으로 Matrix 생성] Numpy R..

[Tensorflow2.x] Tensorflow의 이해

텐서플로우가 어떻게 작동하는지, 어떤 구조를 가지고 있는지 그 Flow에 대해서 알아보도록 하자. 독학은 참 어렵지만 새로운것은 항상 재밌다. 1). 플로우(Flow) : Data Flow Graph Computation 텐서플로우는 병렬처리가 필수인데, 대용량데이터의 연산때문이다. 연산구조이다. 노드를 연결하는 엣지가 데이터를 / 노드는 데이터를 통해 수행하는 연산 역할을 하는 그래프 구조를 의미한다. ** 여기서 노드와 엣지란? 엣지(Edge)는 텐서를 의미하며 엣지의 방향은 텐서의 흐름을 의미하고 노드(Node)는 곱하고, 나누는 등 텐서를 처리하는 연산을 말합니다. 2). 그래프 구조(Graph structure)와 Data Flow 구조 Data Flow를 이해하려면 그래프구조를 알아야한다. 그..

반응형