분류 전체보기 24

[Deep Learning from scratch] 3. 신경망

이번 장에서 배울 신경망은 앞장에서 배운 퍼셉트론의 단점을 보완해준다. 퍼셉트론에서는 적절한 가중치 매개변수 값을 인간이 수동으로 설정해야 했는데, 신경망은 적절한 값을 데이터로부터 자동으로 학습한다. 신경망의 개요를 살펴보고, 입력 데이터가 무엇인지 식별하는 처리 과정을 알아보자. 다차원 배열의 계산은 생략한다. 신경망은 다음의 그림과 같다. 은닉층의 뉴런은 사람의 눈에 보이지 않기 때문에 은닉층이라는 이름이 붙여졌다. 이 책에서는 입력층에서부터 출력층 방향으로 0,1,2층으로 한다. 포스트에서도 이 방식을 채택하겠다. 파이썬의 인덱스도 0부터 시작하여 코드를 구현할 때 용이하기 때문이다. 또한 자료에 따라 층 개수로 그림 3-1을 3층 신경망이라고도 하는데, 여기서는 가중치를 갖는 층의 개수를 사용하..

딥러닝 2023.03.05

[Deep Learning from scratch] 2. 퍼셉트론

2장부터 시작해보도록 하자. 앞의 numpy와 matplotlib의 pyplot, 논리게이트에 대한 내용은 생략한다. 퍼셉트론은 신경망의 기원이 되는 알고리즘이다. 퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력한다. 각 입력값마다 고유한 가중치(w)를 곱해서 그 값들의 합이 임계값(θ)을 넘어서면 1, 그렇지 못하면 0을 출력한다. 가중치가 클수록 해당값이 중요하다는 것을 의미한다. 이제 이 논리회로를 파이썬을 이용하여 AND게이트로 구현하면 다음과 같다. def AND(x1, x2): # x1, x2는 입력값 w1, w2, theta = 0.5, 0.5, 0.7 # 입력값마다 가지는 고유한 가중치와 임계값 tmp = x1*w2 + x2*w2 if tmp theta: return 1 앞의 코..

딥러닝 2023.03.05

[Do it! Pandas] 12. 시계열 데이터

벌써 마지막 장이다. 제목에서 알 수 있듯이 시계열 데이터에 대해 알아보고자 한다. 어떤 것을 측정하거나 기록할 때 주로 쓰이는 시계열 데이터는 시간정보를 다루기 편하게 해준다. 그렇기 때문에 우리는 이를 다룰 줄 알아야 한다. 먼저, 시계열 데이터를 사용하기 위해 datatime 오브젝트를 사용해보자. now와 today 메서드로 현재 시간과 날짜를 꽤 정확하게 알 수 있다. from datetime import datetime now1 = datetime.now() print(now1) now2 = datetime.today() print(now2) 2023-02-20 14:10:45.006850 2023-02-20 14:10:45.006851 datetime 오브젝트를 통해 특정 시간을 생성하는 것..

Pandas 2023.02.20

[Do it! Pandas] 11. 그룹 연산

그룹 연산은 데이터를 집계하거나 변환하는 등의 작업을 한 번에 처리할 수 있게 해주는 강력한 기능이다. 그룹 연산은 데이터를 '분할', '반영', '결합'의 과정을 거친다. 이 과정을 '분할 - 반영 - 결합(Split - Apply - Combine)' 이라고 한다. '분할' : 어떤 기준으로 데이터를 나누는 것 '반영' : 함수 등을 이용하여 데이터를 처리하는 것 '결합' : 처리한 결과를 다시 합치는 것 그룹연산을 통해 더 큰 용량의 데이터를 손쉽게 처리할 수 있다는 강점이 있어 매우 중요하다. 먼저, 데이터를 집계하는 것부터 알아보자. 여기서는 앞서 사용한 바 있는 gapminder 데이터를 가져와 사용한다. import pandas as pd df = pd.read_csv('../data/gap..

Pandas 2023.02.19

[Do it! Pandas] 10. apply 메서드 활용

apply 메서드는 사용자가 작성한 함수를 한 번에 데이터프레임의 각 행과 열에 적용하여 실행할 수 있게 해주는 메서드이다. 즉, 브로드캐스팅에 유용하다. for문을 사용해도 브로드캐스팅이 가능하나, 대용량의 데이터를 처리할 때는 apply메서드가 for문보다 더 빠르게 연산하므로 꼭 알아야 한다. 다음과 같은 데이터프레임의 a열의 값들을 제곱한다고 해보자. import pandas as pd df = pd.DataFrame({'a':[10,20,30], 'b':[20,30,40]}) print(df) a b 0 10 20 1 20 30 2 30 40 아래와 같은 방법으로 할 수도 있지만 apply 메서드를 이용해도 쉽게 수행이 가능하다. df['a']**2 # a열 값들 제곱 def my_exp(x, ..

Pandas 2023.02.19

[Do it! Pandas] 9. 문자열 처리하기

문자열은 pandas의 object 자료형을 말하는 것으로 데이터에서 자주 사용되기 때문에 처리하는 법을 알아야 한다. 대체로 python에서 쓰는 방식을 안다면 쓰기 쉽기 때문에 어렵진 않다. 기본적인 문자열 다루는 법은 안다고 가정하고 join, splitlines, replace 메서드를 알아보자. 먼저 join 메서드를 살펴보자. join을 쓰는 문자열은 빈 문자열처럼 보이지만 공백을 가진 문자열로 각 문자열마다 사이를 메워주는 역할을 한다. 다음의 예를 보면 이해하기가 쉽다. # join last = 'Pyo' mid = 'Sung' first = 'Ju' name = ''.join([last, mid, first]) name2 = '/'.join([last, mid, first]) print(..

Pandas 2023.02.19

[Do it! Pandas] 8. 판다스 자료형

계속 사용해왔던 tips 데이터를 이번에도 사용해보자. astype 메서드를 사용하면 열 데이터를 원하는 자료형으로 바꿀 수 있다. tips['sex_str'] = tips['sex'].astype(str) print(tips.dtypes) # sex_str의 dtype이 object인 것을 확인할 수 있다. total_bill float64 tip float64 sex category smoker category day category time category size int64 sex_str object dtype: object 이번에는 정수가 있어야 하는 열에 문자열이 저장되어 있는 경우 정수로 자료형을 바꾸는 법을 알아보자. 다음의 데이터는 1,3,5,7행의 total_bill 열의 데이터에 mi..

Pandas 2023.02.18

[Do it! Pandas] 7. 깔끔한 데이터

데이터의 분석에 앞서 가장 중요한 것은 '가져온 데이터를 어떻게 분석하기 쉽도록 가공할 것인가' 이다. 이를 위해 데이터를 소위 깔끔하게 만들기 위한 방법들을 알아야 한다. 데이터의 열과 행을 다루고, 어떻게 가공하는지 다양한 데이터를 이용하여 실습해본다. 실습을 위해 pew.csv 파일을 이용한다. import pandas as pd pew = pd.read_csv('../data/pew.csv') print(pew.head()) religion 150k Don't know/refused 0 122 109 84 96 1 73 59 74 76 2 62 39 53 54 3 949 792 633 1489 4 21 17 18 116 위처럼 어떤 값으로 이루어진 열이 많은 데이터프레임을 '넓은 데이터'라고 한다..

Pandas 2023.02.12

[Do it! Pandas] 6. 누락값 처리하기

누락값은 말 그대로 데이터에서 값을 가지지 않는 것으로 데이터가 없음을 의미한다. 데이터 분석에서 누락값은 생각 외로 많이 존재하기 때문에 이를 다루는 것이 매우 중요하다. 깨끗한 데이터를 만들기 위해 누락값의 처리 방법을 알아보자. 먼저 누락값을 눈에 보이게 확인해보자. 누락값은 비교할 값 자체가 존재하지 않기 때문에 비교 구문을 작성하면 다음과 같은 결과를 얻는다. from numpy import NaN, NAN, nan print(NaN==True) print(NaN==False) print(NaN==0) print(NaN=='') print(NaN==NaN) False False False False False 어떤 값이 누락값인지 아닌지 판별해주는 isnull 메서드와 notnull 메서드가 존..

Pandas 2023.02.12

[Do it! Pandas] 5. 데이터 연결하기

먼저 concat 메서드에 대해 알아보자. concat메서드는 여러 개의 데이터프레임을 연결하는 메서드이다. 두 개의 데이터프레임을 연결할 때는 append를 써도 된다. 실습에서 사용할 데이터를 가져와서 확인해준다. import pandas as pd df1 = pd.read_csv('../data/concat_1.csv') df2 = pd.read_csv('../data/concat_2.csv') df3 = pd.read_csv('../data/concat_3.csv') print(df1.head(), '\n', df2.head(), '\n', df3.head()) A B C D 0 a0 b0 c0 d0 1 a1 b1 c1 d1 2 a2 b2 c2 d2 3 a3 b3 c3 d3 A B C D 0 a4..

Pandas 2023.02.12