데이터 과학을 위한 파이썬 머신러닝 3장 연습문제 풀이

연습문제

  1. 다음 코드를 실행할 경우 예상되는 결과값은 무엇인가?

    import numpy as np
    
    test_a = np.array([[4, 8], [2, 9]])
    print(test_a * test_a)
    
    • 답 : 1
    [[16 64]
     [ 4 81]]
    
  1. 다음 코드를 실행할 경우 예상되는 결과값은 무엇인가?

    test_a = np.array([[5, 5, 5], [3, 3, 3]])
    print(test_a ** 2)
    
    • 답 : 2
    [[25 25 25]
     [ 9  9  9]]
    
  1. A = np.array([[3,22,2],[3,1,5]]), B = np.array([[6,7,9],[2,1,3]])일 때,
    다음 중 연산이 실행되지 않고 오류가 발생하는 것은?
    • 답 : 2
    • 설명 : 행, 열이 같은 행렬끼리는 계산이 되지 않음
  1. 다음 수식을 나타내는 넘파이 코드를 작성하고자 한다.
    다음 코드 중 결과가 다른 것을 하나 찾으시오.
    Y_true = np.array([1, 1, 0, 1, 1])
    Y_pred = np.array([0.23, 0.5, 0.99, 0.69, 0.4])
    
    • 답 : 2
    diff = (Y_true - Y_pred)
    np.sqrt(diff ** 2 / len(Y_true))
    
    • 설명 : 넘파이 배열 형태로 출력
  1. 다음 코드는 ndarray A의 각 원소들을 평균과 표준편차를 이용하여
    정규분포로 정규화시키는 벡터 연산 코드이다. 빈칸에 알맞은 것을 고르시오.
    • 답 : 3. mean, std
    A = np.array([8, 1, 2, 2, 3, 4, 5, 6, 7, 8])
    Z = (A - A.mean(axis=0) / A.std(axis=0))
    print(Z)
    
  1. 다음 수식을 넘파이로 구현하고자 한다.
    벡터를 입력하여 정규화된 벡터로 나타낼 때,
    수식을 올바른 넘파이 코드로 표현한 것이 아닌 것은 무엇인가?

    • 답 : 1
    def softmax(x):
       f_x = x.exp / np.sum(x.exp)
       return f_x
    
    • 설명 : 에러 발생, 아래와 같이 수정
    f_x = np.exp(x) / np.sum(np.exp(x))
    
  1. 다음 코드를 실행할 경우 예상되는 결과값은 무엇인가?
    test_a = np.arange(1, 10).reshape(3, 3)
    test_b = np.arange(6).reshape(2, 3)
    
    test_a.dot(test_b.T)
    
    • 답 : 4
    array([[ 8, 26],
           [17, 62],
           [26, 98]])
    
  1. 다음 중 넘파이 배열의 특징으로 적합한 것을 모두 고르시오.
    • 답 :
    1. C의 데이터 타입을 기본으로 배열이 생성된다. / 3. 하나의 데이터 타입만으로 배열이 생성된다.
  1. 다음 코드를 실행할 경우 예상되는 결과값은 무엇인가?
    arr = np.arange(16).reshape(4, 4)
    print(arr.size - arr.shape[0] * arr.ndim)
    
    • 답 : 3. 8
  1. 다음 코드를 실행할 경우 예상되는 결과값은 무엇인가?
    arr = np.arange(20).reshape(10, 2)
    x, y = arr.shape
    
    print(arr.reshape(y, x).shape)
    
    • 답 : 2. (2, 10)
  1. 다음 배열은 벡터이다. 이 배열을 4×6의 행렬로 바꾸려고 할 때 빈칸에 알맞은 것을 고르시오.
    arr = np.arange(24)
    
    • 답 : 1. reshape(4, 6)
    • 설명 :
    arr = arr.reshape(4, 6)
    
    [[ 0  1  2  3  4  5]
     [ 6  7  8  9 10 11]
     [12 13 14 15 16 17]
     [18 19 20 21 22 23]]
    
  1. 다음 코드를 실행했을 때 결과값이 다른 하나를 고르시오.
    arr = np.arange(8)
    arr
    
    • 답 : 2. arr.reshape(2, -2)
    • 설명 : 2차원 배열 형태로 출력
  1. 다음 코드를 실행할 경우 예상되는 결과값은 무엇인가?
    arr_1 = np.arange(4)
    arr_2 = np.arange(4, 0, -1)
    
    np.any(arr_1 < arr_2)
    
    • 답 : 2. True
  1. 다음 코드를 실행할 경우 예상되는 결과값은 무엇인가?
    a = np.arange(6).reshape(2, 3)
    b = a > 4
    a[b]
    
    • 답 : 1. array([5])
  1. 다음 find_nearest_value 함수는 벡터와 어떤 값을 입력하면
    해당 벡터 값 중 입력된 값과 차이가 가장 작은 값이 반환된다.
    해당 함수로 가장 적합한 코드를 찾으시오.
    X = np.array([1, 2, 3, 4, 5, 6, 7])
    target_value = 4.3
    find_nearest_value(X, target_value)
    
    • 답 : 3
    def find_nearest_value(X, target_value):
           result = X[np.argmin(np.abs(X - target_value))]
           return result
    
  1. 다음 코드를 실행할 경우 예상되는 결과값은 무엇인가?
    Z = np.array([6, 6, 6, 4, 7, 9, 1, 8, 8, 4])
    Z[Z.argsort()[:5]] = 0
    print(Z)
    
    • 답 : 4
    [0 0 6 0 7 9 0 8 8 0]
    
  1. 다음 코드를 실행할 경우 예상되는 결과값은 무엇인가?
    arr = np.array([[17, 27, 14, 11],
                    [8, 24, 25, 26],
                    [11, 26, 26, 23],
                    [22, 18, 24, 11]])
    print(arr[[0, 2, 1]])
    
    • 답 : 1
    [[17 27 14 11]
     [11 26 26 23]
     [ 8 24 25 26]]
    

공부

데이터 과학을 위한 파이썬 머신러닝 : 3. 넘파이

출처

최성철, 『데이터 과학을 위한 파이썬 머신러닝』, 초판, 한빛아카데미, 2022

이 글이 도움이 되었나요?
0 minutes ago
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.