전체 글 83

편미분으로 기울기 벡터 구하기

위의 함수에 대해 그래프를 그리면 아래와 같다. 그리고 편미분을 통해 함수의 기울기 벡터를 구해보았다. 이 벡터는 해당 지점에서의 기울기를 알려 주기도 하지만, 그래프를 가장 가파르게 올라갈 수 있는 방향도 함께 알려준다. 2차원 그래프에서도 가장 가파르게 올라가기 위해 왼쪽으로 가야 하는지, 오른쪽으로 가야 하는지, 기울기가 그 방향을 알려 준다는 것을 배웠다. 마찬가지로 고차원 그래프에서도 기울기가 그 방향을 알려주는데 대신 기울기가 벡터가 된다. 예를 들어서 x가 1이고 y가 1인 지점에 놓였다고 생각해보자. 기울기 벡터는 2, 4 이므로 이 벡터를 그래프에 표시하면, x 방향으로 두 칸이고 y 방향으로 네 칸이니까, 위와 같은 대각선 방향이 나온다. 이 대각선 방향으로 움직인다면, 가장 가파르게 ..

편미분과 기울기

편미분위의 함수가 있다고 가정해보자.인풋 변수가 $x$와 $y$ 이렇게 두 개로 이루어져 있다. 이럴 때에는 '편미분'을 해야 하는데,편미분이란 두 인풋 변수 $x$랑 $y$에 대해서 모두 미분을 하는 게 아닌 변수 하나에 대해서만 미분을 하는 것이다. 즉, 변수 $x$ 에 대해서 편미분을 할 수도 있고, 변수 $y$에 대해서 편미분을 할 수도 있다.  $x$ 에 대해서 편미분$x$ 에 대해서 미분을 하면: $d/dx$ 를 쓰는데, $x$ 에 대해서 편미분을 하면 $∂/∂x$ 를 쓴다. (*'델'이라고 읽음)변수 $x$ 에 대해서 편미분을 한다면 $x$ 를 제외한 나머지 변수들은 마치 상수인 것처럼 취급하게 되므로 $x$ 를 제외한 나머지 변수 $y$ 를 변수가 아니라 그냥 일반 숫자(상수)처럼 취급 한..

선형대수학 - 극소점, 극대점 그리고 안장점

순간 변화율이 양수면 해당 지점에서 x가 늘어나면 y도 늘어난다. 반대로 순간 변화율이 음수라는 것은, 해당 지점에서 x가 늘어나면 y가 줄어든다는 뜻이다. 그런데 순간 변화율이 0인 지점은 해당 지점에서 x가 변해도 y는 그대로라는 의미이다. 이런 순간 변화율이 0인 지점이 발생하는 경우는 아래와 같다. 극소점 (Local Minimum)극소점은 이렇게 그래프에서 아래로 볼록 튀어 나오는 경우를 말한다. 이 지점에서 왼쪽으로는 기울기가 음수고, 오른쪽으로는 기울기가 양수인데, 기울기가 음수에서 양수로 전환할 때 한 번 0을 찍고 가게 된다. 참고로 지금 아래로 볼록 튀어 나오는 부분이 여러 개 있는 경우에는 극소점이 여러 개 있는 것인데, 이 중에서 제일 작은 값은 최소점, 영어로는 global m..

선형대수학 - 행렬

행렬과 벡터 구분행렬이란?행렬(matrix)은 수를 직사각형의 형태로 나열한 것으로 행렬의 가로줄을 행, 영어로는 row라고하며, 세로줄은 열, 영어로는 column이라고 한다. A의 경우 행이 3개 있고 열이 4개 있는데, 이런 걸 3 x 4 행렬 또는 "이 행렬의 차원이 3 x 4다"라고도 한다. 원소 표기 m x n인 행렬이 있다면 원소들을 아래처럼 표현할 수 있다.벡터벡터도 일종의 행렬로써, 행이 하나밖에 없거나 열이 하나밖에 없는 행렬을 의미한다.a는 열이 하나만 있으므로 열 벡터라고 하며 b는 행이 하나만 있기 때문에 행 벡터라고 한다. 다만, 열 벡터를 사용하는 경우가 더 많기 때문에, 그냥 벡터라고 하면 열 벡터를 뜻한다. 벡터의 차원벡터는 무조건 열이 하나밖에 없거나 행이 하나밖에 없다...

DataFrame - 그룹별로 분석하기

groupby()netflix_df.groupby('genre').count()# 컬럼별로 결측값을 제외한 각 데이터가 몇개씩 있는지 알 수 있음netflix_df.groupby('genre').size()# genre컬럼을 기준으로 그룹화# .size(): 각 장르별로 로우가 몇개인지 한 줄의 시리즈로 표현됨(*결측값 포함)netflix_df.groupby('genre').min(numeric_only=True)# min에 문자데이터가 적용될 경우, 문자 데이터의 최소값은 오름차순을 했을 때 가장 첫번째 값# 숫자 데이터만 요약해서 보고 싶다면 'numeric_only=True'를 설정해줘야 함# min 외 max, mean, sum 모두 사용법 동일함netflix_df.groupby('genre')[..

DataFrame - 데이터 합치기

pd.concat()pd.concat([english_df1, english_df2], ignore_index=True) # ignore_index: index값을 합친 데이터 기준으로 재설정pd.concat([english_df, math_df], axis=1)# axis=1: 컬럼을 기준으로 합침 예제2020년부터 2022년까지 3년 간의 월별 매출액 데이터를 한 번에 모아서 보려고 합니다. 각 연도의 데이터는 sales_2020, sales_2021, sales_2022라는 변수에 각각 저장되어 있는데요. 세 개의 DataFrame을 하나로 합쳐서 sales_df라는 변수에 저장해 주시면 됩니다.import pandas as pdsales_2020_df = pd.read_csv('data/sales..

DataFrame - 날짜와 시간 연산

order_df['shipping_time'] - order_df.indextimedelta: 두 시점 사이의 시간 차이를 나타내는데 사용됨pd.to_timedelta(order_df['days_for_shipping(expected)'], unit='D']# unit='D': day인 1을 기준으로 timedelta가 설정됨# H: 시간 / P: 분 / S: 초 단위예제 배달 음식이 고객에게 도착한 시각을 계산해 봅시다. 주문 시각(order_time)과 배달 소요 시간(time_taken)을 가지고 배달 완료 시간을 계산해서 DataFrame에 delivery_time이라는 컬럼을 추가해 주세요! 참고로 time_taken 컬럼은 배달에 몇 분이 소요되었는지를 의미하므로, 아래 출력 결과처럼 분을 ..

DataFrame - 날짜와 시간 연산

timedelta: 두 시점 사이의 시간 차이를 나타내는데 사용됨order_df['shipping_time'] - order_df.indexpd.to_timedelta(order_df['days_for_shipping(expected)'], unit='D']# unit='D': day인 1을 기준으로 timedelta가 설정됨# H: 시간 / P: 분 / S: 초 단위예제 배달 음식이 고객에게 도착한 시각을 계산해 봅시다. 주문 시각(order_time)과 배달 소요 시간(time_taken)을 가지고 배달 완료 시간을 계산해서 DataFrame에 delivery_time이라는 컬럼을 추가해 주세요! 참고로 time_taken 컬럼은 배달에 몇 분이 소요되었는지를 의미하므로, 아래 출력 결과처럼 분을 ..

DataFrame - 날짜와 시간 데이터 다루기

데이터를 불러올 때 형식 지정하기pd.to_datetime(): Timestamp로 된 시리즈parse_dates()목적: 데이터프레임의 특정 열을 날짜형으로 변환하여, 날짜와 시간을 보다 쉽게 조작하고 분석할 수 있게 해준다.사용법: parse_dates는 pd.read_csv() 또는 pd.read_excel() 같은 데이터 읽기 함수의 인자로 사용된다. # parse_dates 파라미터에 '날짜' 데이터로 불러올 컬럼명을 입력함order_df = pd.read_csv('data/order.csv', parse_dates=['order_time', 'shipping_time'])pandas datetime의 기본 형식은 '연도-월-일' 이다. 이를 parse_dates=[]에 넘겨주면 pandas가 ..

DataFrame - 데이터 구간화(cut(), apply())

df.cut()# cut()함수를 통해 데이터 구간화patient_df['age_group'] = pd.cut(patient_df['age'], bins=[20, 30, 40, 50, 60, 70], right=False, labels=['20s', '30s', '40s', '50s', '60s'])# bin: 구간화 할 범위# right=False: 오른쪽 구간을 포함하지 않음(기본값은 True)# labels: 구간에 이름을 붙여줌예제환자들의 비만도를 BMI 값에 따라 분류하려고 합니다. 아래 기준에 따라 비만도를 분류해서 obesity라는 컬럼에 저장해 주세요.18.5 미만(저체중): under18.5 이상 25 미만(정상): healthy25 이상 30 미만(과체중): over30 이상(비만..