<jupyter_start><jupyter_text>영벡터zeros()<jupyter_code>np.zeros((3,1))<jupyter_output><empty_output><jupyter_text>일벡터ones()<jupyter_code>np.ones((3,1))
zero = np.zeros((3,3))
zero
ones = np.ones((3,3))
ones
diag = np.diag((3,3))
diag
identity = np.identity(3)
eye = np.eye(4)
identity, eye
x = np.array([10, 11, 12, 13, 14])
y = np.array([0, 1, 2, 3, 4])
x + y
x - y<jupyter_output><empty_output><jupyter_text>내적(Inner product)<jupyter_code>x = np.array([[1], [2], [3]])
y = np.array([[4], [5], [6]])
x.T @ y
np.dot(x.T, y)<jupyter_output><empty_output><jupyter_text>넘파이 배열이 1차원이면 넘파이가 자동으로 앞의 벡터는 행 벡터로 가정함.<jupyter_code>x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
x @ y
np.dot(x, y)<jupyter_output><empty_output><jupyter_text>연습문제 2.2.1A, B, C 세 회사의 주식은 각각 100만원, 80만원, 50만원이다. 이 주식을 각각 3주, 4주, 5주를 매수할 때 필요한 금액을 구하고자 한다. (1) 주식의 가격과 수량을 각각  p  벡터,  n  벡터로 표시하고 넘파이로 코딩한다. (2) 주식을 매수할 때 필요한 금액을 곱셈으로 표시하고 넘파이 연산으로 그 값을 계산한다.<jupyter_code># (1)
p = np.array([100, 80, 50])
n = np.array([3, 4, 5])
# (2)
np.dot(p, n) , p @ n<jupyter_output><empty_output><jupyter_text>연습 문제 2.2.3다음 코드를 실행하면 MNIST 숫자 이미지 전체 데이터를 모두 벡터로 변환하여 하나의 넘파이 행렬 X를 만든다. 이 행렬을 이용하여 다음 문제를 풀어라.<jupyter_code>from sklearn.datasets import load_digits
X = load_digits().data<jupyter_output><empty_output><jupyter_text>(1) 내적을 이용하여 첫 번째 이미지와 10번째 이미지의 유사도를 구하라.(2) 내적을 이용하여 모든 이미지의 조합에 대해 유사도를 구하라. 어떻게 구현하는 것이 효율적일까? (힌트 : 이 문제는 뒤에서 배울 행렬과 행렬의 곱셈을 이용한다.)<jupyter_code>image_1 = X[0]
image_10 = X[9]
image_1.shape, image_10.shape
simil = np.dot(image_1.T, image_10)
simil
X[0:10].shape
np.dot(image_1.T, image_1)
(2)
all_dot = np.dot(X,X.T)
all_dot[0:10,0:10]
X.shape<jupyter_output><empty_output><jupyter_text>행렬곱<jupyter_code>A = np.array([[1, 2, 3], [4, 5, 6]])
B = np.array([[1, 2], [3, 4], [5, 6]])
C = A @ B
C
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = np.array([[9, 8], [7, 6]])
np.dot(A, B), np.dot(B, A)
np.dot(A, B+C), (np.dot(A,B) + np.dot(A,C))<jupyter_output><empty_output><jupyter_text>연습 문제 2.2.5<jupyter_code>#(4)

from sklearn.datasets import load_iris
X = load_iris().data


X.shape
ones_1 = np.ones([150,1])
ones_1
np.dot(ones_1, ones_1.T)
np.dot(np.dot(ones_1, ones_1.T), X) / 150
a = np.dot(np.dot(ones_1, ones_1.T), X) / 150
a.shape
X<jupyter_output><empty_output><jupyter_text>norm<jupyter_code>A = (np.arange(9) - 4).reshape((3,3))
A
np.linalg.norm(A)
np.sqrt(np.dot(A.reshape(1,-1), A.reshape(-1,1)).sum())
from sklearn.datasets import load_boston
boston = load_boston()
X = boston.data
y = boston.target
A = X[:4, [0, 4, 5, 6]]  # 'CRIM', 'NOX', 'RM', 'AGE'
b = y[:4]
A
b
x = np.dot(np.linalg.inv(A), b)
x
A = np.array([[1, 1, 0], [0, 1, 1], [1, 1, 1], [1, 1, 2]])
A
b = np.array([[2], [2], [3], [4.1]])
b
Apinv = np.linalg.inv(A.T @ A) @ A.T
Apinv
x = Apinv @ b
x
A @ x
x, resid, rank, s = np.linalg.lstsq(A, b)
x
resid<jupyter_output><empty_output><jupyter_text>연습 문제 2.4.6¶보스턴 집값 문제를 선형 예측모형  $Xw=\hat{y}$ 로 풀었을 때의 가중치벡터  w 를 최소 자승 방법으로 구하라. 행렬과 벡터 데이터는 다음과 같이 얻을 수 있다.<jupyter_code>from sklearn.datasets import load_boston
boston = load_boston()
X = boston.data
y = boston.target
w, resid, rank, s = np.linalg.lstsq(X, y)
w<jupyter_output>C:\Users\SHM\Anaconda3\lib\site-packages\ipykernel_launcher.py:1: FutureWarning: `rcond` parameter will change to the default of machine precision times ``max(M, N)`` where M and N are the input matrix dimensions.
To use the future default and silence this warning we advise to pass `rcond=None`, to keep using the old, explicitly pass `rcond=-1`.
  """Entry point for launching an IPython kernel.
StarcoderdataJupyterStructuredCleanDedup