본문 바로가기

기본소양/선형대수학11

파이썬으로 하는 선형대수학 (Colab Tutorial) 파이썬으로 하는 선형대수학 (Colab Tutorial) https://colab.research.google.com/drive/1wzDsFE5IHup-YSnEaO0qcYFu5CtXu9KY?usp=sharing 파이썬으로하는 선형대수학.ipynb Colaboratory notebook colab.research.google.com 코랩에 튜토리얼형식으로 정리하였습니다. 담은 내용은 아래와 같습니다. 스칼라와벡터 1.1 벡터그리기 1.2 a⃗ −b⃗ 그리기 1.3 a⃗ 와 스칼라의 곱 ( 5, π, −e) 1.3 3D vector 1.4c⋅d (Dot Product) 1.5 e x f (행렬곱) 1.8 ||g|| 와 ||h|| 계산 (NORM) 매트릭스 2.1 매트릭스의 차원 2.2 FT를 계산 2.3 I.. 2021. 1. 19.
파이썬으로 하는 선형대수학 (6. Clustering) 6.1 K-Means Dataset iris = sns.load_dataset('iris') iris.head() iris = iris.drop('species',axis=1) df_kmeans = StandardScaler().fit_transform(iris) df_kmeans = pd.DataFrame(df_kmeans) df_kmeans.columns = iris.columns.values print(df_kmeans.shape) df_kmeans.head() Cluster & fit kmeans = KMeans(n_clusters=3) kmeans.fit(df_kmeans) Check labels & Predict print(kmeans.labels_.shape) print(kmeans.pred.. 2021. 1. 19.
파이썬으로 하는 선형대수학 (5. Dimensionality Reduction) 5.0 Dataset import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.preprocessing import StandardScaler from sklearn.decomposition import PCA import seaborn as sns iris = sns.load_dataset('iris') iris.head() 5.1 PCA Normalization label = iris[['species']] iris = iris.drop('species',axis=1) x = iris.values y = iris x = StandardScaler().fit_transform(x) pca = PCA(n_comp.. 2021. 1. 19.
파이썬으로 하는 선형대수학 (4. 공분산과 상관계수) 4.1 평균, 분산, 표준편차 (numpy와 pandas의 ddof 디폴트값 차이) def myfunc(data) : mean = np.sum(data)/len(data) var = np.sum([np.power(i - mean,2) for i in data])/len(data) std = var**0.5 return mean, var, std data0 = np.array([243, 278, 184, 249, 207]) data_panda = pd.DataFrame(data0) x,y,z = myfunc(data0) print('평균 : ',x, '\nnumpy : ',data0.mean(), '\npandas : ',data_panda.mean(), '\n\n분산 : ',y, '\nnumpy : ',.. 2021. 1. 18.
파이썬으로 하는 선형대수학 (3. Span, Rank, Basis, Projection) 3.1 2차원 벡터 a = [1,3] b = [2,6] plt.figure(figsize=(2.5,5)) plt.xlim(0, 3.5) plt.ylim(0, 7) plt.xticks(ticks=np.arange(0, 4, step=1)) plt.yticks(ticks=np.arange(0, 7, step=1)) plt.arrow(0, 0, a[0], a[1], width = 0.05,head_width = .2, head_length = .1, color = 'red', alpha = 0.3) plt.arrow(0, 0, b[0], b[1], head_width = .1, head_length = .1, color = 'blue', alpha = 0.3) plt.axhline(0, color='gray'.. 2021. 1. 18.
파이썬으로 하는 선형대수학 (1. 스칼라와 벡터 & 2. 매트릭스) 1. 스칼라와벡터 1.1 벡터그리기 import math import matplotlib.pyplot as plt import numpy as np a = [6,13] b = [17,8] plt.figure(figsize=(10,10)) plt.xlim(0, 20) plt.ylim(0, 20) plt.xticks(ticks=np.arange(0, 20, step=1)) plt.yticks(ticks=np.arange(0, 20, step=1)) plt.arrow(0, 0, a[0], a[1], head_width = .5, head_length = .5, color = 'red') plt.arrow(0, 0, b[0], b[1], head_width = .5, head_length = .5, color .. 2021. 1. 18.
[선형대수학] 차원을 왜 축소시키는가 차원을 왜 축소시키는가 Dimensionality reduction 선형대수를 사용하는 가장 큰 이유는 우리가 인지할 수 없는 다차원에 대하여 이해하고 설명하는데 있을 것 입니다. 지난 포스트까지 행렬을 이용해여 공간을 바꾸고, 벡터를 변형시켜보았습니다. 이제 4차원 이상도 이해할 수 있는 강력한 도구가 생긴것입니다. Dimensionality reduction 차원을 축소시키기 위해 선형변환을 해왔지만, 오늘은 왜 축소시키는지에 대해 잠시 생각해보겠습니다. 왜 굳이 PCA나 T-SNE 등 여러방법을 동원해서 차원을 축소시키려하는 걸까요? 예를 한번 들어 보겠습니다. 우리는 공부를 하는 여러가지 이유가 있습니다. 그 이유중에는 '좋은 회사에 입사하고 싶어서','연봉을 더 받고싶어서','이직을 위해서','.. 2021. 1. 15.
[선형대수학] 공분산과 상관계수 ( 피어슨, 스피어만) 공분산과 상관계수 ( 피어슨, 스피어만 ) Covariance & Correaltion coefficient (Pearson, Spearman) 어떤 데이터를 알고싶을 때 우리는 흔히 평균과 분산을 이용합니다. 평균은 기대값을 구하기 위함이고, 분산은 데이터의 분포가 얼마나 퍼져있는지를 알기 위함입니다. 데이터를 비교할 때 우리는 각각의 평균을 구합니다. 예를 들어 한 학교의 시험점수의 평균이 영어가 80점, 국어가 70점이라고 했을 때, 우리는 영어시험이 더 쉬웠다거나 학생들이 영어를 더 잘하겠구나 생각할 수 있습니다. 하지만 아직 이 평균이 정말 의미가 있다고는 할 수 없습니다. 50명 중에 영어점수 60점이 25명, 100점이 25명이고 국어는 모두 70점이라면 고민을 더 해보아야겠죠. 평균말고도 .. 2021. 1. 14.
[선형대수학] 고유값과 고유벡터, 벡터의 변환 고유값과 고유벡터, 벡터의 변환 지난번 보단깊게, 그러나 너무 깊지 않게 앞 포스트와 이어집니다. [선형대수학] 행렬은 벡터를 변화시킨다 [선형대수학] 벡터의 차원 Eigenvalues 고유벡터와 고유값은 왜 알아야할까요? 우리는 행렬과 벡터를 곱하는 것을 배움으로써 선형변환(Linear transformation)을 알았고, 행렬식(Determinants)를 통해서 선형변화에 의한 영역의 변화를 알았고 (이를통해 span의 축소와 확장을 알았으며), 기저(Basis)가 변할 수 있다는 사실을 알았습니다. 행렬로써 우리는 좌표계를 바꾸고, 이는 기저를 바꿀 수도 있습니다. 이제 우리는 기저를 바꿀 것 입니다. 좌표계를 바꿔서 말이죠 잠깐 복습해 보겠습니다. 위 행렬의 의미는 무엇일까요? i hat(1,0.. 2021. 1. 14.
[선형대수학] 벡터의 차원 벡터의 차원 지난번 보단깊게, 그러나 너무 깊지 않게 지난포스트에서 다뤘던 SPAN, BASIS, RANK에 대해서 좀 더 자세히 다뤄보고자 합니다. 지난포스트를 기반으로한 포스트입니다. Real coordinate space (R2) 실수공간에 대하여 다시 살펴보겠습니다. R^2에서 두 벡터가 선형 독립일 때, 두 벡터의 합으로 모든 부분을 표현할 수 있습니다. 벡터의 모든 끝점의 집합이 두 벡터의 Span입니다. 다시말해 2차원공간, 면이됩니다. Linearly Dependent 선형종속 벡터의 방향이 같다면 둘이 아무리 더해도 span으로 표현되지 않습니다 Linearly Independent 선형독립 벡터의 방향이 다를 때 둘이 더하면 span이 됩니다 다시말해 R^2에서 두벡터를 이용하여 벡터상.. 2021. 1. 13.
[선형대수학] 행렬은 벡터를 변화시킨다 행렬은 벡터를 변화시킨다 3Blue1Brown - Essence of linear algebra 원래 벡터의 정의부터 선형의 개념(결합과 생성, 종속과 독립 등)을 포함하여 포스팅 하려 글을 쓰고 있었으나, 너무 길어지고 파고들면 끝도 없어 압축하여 간단히 기억할 부분만 포스팅합니다. 강의를 수강하고 되돌아 보기위한 데 그 목적이 있습니다. 본 포스팅은 3blue1brown의 Essence of linear algebra를 시청하고 그 자료를 바탕으로 만들어진 자료입니다. 3Blue1Brown 3Blue1Brown, by Grant Sanderson, is some combination of math and entertainment, depending on your disposition. The goal.. 2021. 1. 12.