single
基礎線形代数
メニューを表示するにはスワイプしてください
線形代数は、機械学習、ディープラーニング、データ分析などさまざまな分野で重要な役割を果たす、数学の基礎的な分野。
ベクトルと行列
線形代数において、ベクトルは値の順序付き集合。1次元NumPy配列はベクトルを効率的に表現可能。行列は数値の2次元配列であり、NumPyの2次元配列で表現できる。
ベクトルと行列の加算・減算、スカラー倍については、**「基本的な数学演算」**の章ですでに説明済み。ここではその他の演算に焦点を当てる。
転置
転置は、行列を対角線で反転させる操作。つまり、行列の行を列に、列を行に変換する。
NumPy 配列の .T 属性を使用して行列を転置可能:
12345import numpy as np matrix = np.array([[1, 2, 3], [4, 5, 6]]) # Transposing a matrix transposed_matrix = matrix.T print(transposed_matrix)
ドット積
ドット積 は、機械学習や深層学習で最も一般的に使用される線形代数演算の一つ。2つの ベクトル(要素数が等しい必要あり)のドット積は、それぞれの 要素ごと の積の合計。結果は スカラー となる:
行列の積
行列の積は、最初の行列の列数が2番目の行列の行数と等しい場合にのみ定義されます。結果として得られる行列は、最初の行列と同じ行数、および2番目の行列と同じ列数を持ちます。
ご覧の通り、結果の行列の各要素は、2つのベクトルのドット積です。要素の行番号は最初の行列の行ベクトルの番号に対応し、列番号は2番目の行列の列ベクトルの番号に対応します。
最初の行列の列数は2番目の行列の行数と等しい必要があります。これは、ドット積を計算するために2つのベクトルが同じ要素数を持つ必要があるためです。
NumPyにおけるドット積と行列の積
NumPy では、ドット積と行列の積の両方に dot() 関数が用意されています。この関数は2つの配列を引数として受け取ります。
また、2つの配列の間に @ 演算子を使うことでも同じ結果を得ることができます。
12345678910111213import numpy as np vector_1 = np.array([1, 2, 3]) vector_2 = np.array([4, 5, 6]) # Dot product using the dot() function print(np.dot(vector_1, vector_2)) # Dot product using the @ operator print(vector_1 @ vector_2) matrix_1 = np.array([[1, 2, 3], [4, 5, 6]]) matrix_2 = np.array([[7, 10], [8, 11], [9, 12]]) # Matrix multiplication using the dot() function print(np.dot(matrix_1, matrix_2)) # Matrix multiplication using the @ operator print(matrix_1 @ matrix_2)
行列積において、右側の引数がベクトル(1次元配列)の場合、NumPyはそれを最後の次元が1の行列として扱います。例えば、6x4行列に要素数4のベクトルを掛ける場合、そのベクトルは4x1行列として扱われます。
また、行列積で左側の引数がベクトルの場合、NumPyはそれを最初の次元が1の行列として扱います。例えば、要素数4のベクトルに4x6行列を掛ける場合、そのベクトルは1x4行列として扱われます。
下図は、課題で使用されるexam_scores配列とcoefficients配列の構造を示しています。
スワイプしてコーディングを開始
exam_scores 配列は、3人の学生(各行が1人の学生を表す)の模擬試験スコアを3つの科目(各列が1つの科目を表す)について格納しています。
- 各科目の試験スコアに、それぞれの係数を掛けます。
- 得られたスコアを各学生ごとに合計し、最終スコアを算出します。
exam_scoresとcoefficientsのドット積を計算します。
これにより、各学生の科目スコアの重み付けによる最終スコアが得られます。
解答
フィードバックありがとうございます!
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください