Pythonでのデータサイエンスの線形代数講座

「Pythonによるデータサイエンスのための線形代数講座」

Image from pixabay

線形代数は数学の分野で、データサイエンスに非常に役立ちます。線形代数を使用することで、大量のデータに数学的な操作を行うことができます。

機械学習で使用されるほとんどのアルゴリズムは、特に行列を使用した線形代数を使用します。ほとんどのデータは行列形式で表されます。

線形代数の使用方法がわかったので、基礎から始めましょう – ベクトル

ベクトル

「数学と物理学において、ベクトルとは単一の数値で表されないいくつかの量、またはいくつかのベクトル空間の要素を通俗的に指す用語である。」[1]

[1]はWikipediaに掲載されている定義です。ほとんどの人が理解していますが、もっと簡単に言えば、ベクトルは次のようなものです:

それは大きさと方向の両方を持つ量を指す用語です。

これは線形代数の基本的な構成要素です。ウィキの定義を見ると、単一の数値で表されない量であることがわかります。つまり、次元があるということです。

ベクトルの次元は、そのベクトル内の数値要素の数によって決まります。

:要素が4つあるベクトルの次元は4です。

ベクトルの大きさは、以下の公式を使って計算されます:

Image by author

さらに理解するための例です。

問題:ボールが空気中を移動し、ボールのx、y、z方向の速度が、標準の直交座標系で与えられています。速度の成分値は、x = -12、y = 8、z = -2です。速度をベクトルに変換し、ボールの合計速度を求めてください。

解答:

Image by author

Pythonを使用したベクトルの適用:

Numpy配列は、ベクトルや行列の両方を表すために使用されるn次元配列データ構造です。

import numpy as np v = np.array([1,2,3,4,5]) #ベクトル

基本的なベクトルの操作:

スカラー倍:

Image by author

Pythonを使用した例:

import numpy as np A = np.array([1,2,3,4]) #ベクトル print(A*4) #スカラー倍

ベクトルの加法と減法:

Image by author

Pythonの例:

import numpy as np A = np.array([1,2,3,4]) #ベクトル1 B = np.array([-4,-3, -2, -1]) #ベクトル2 print(A+B) #ベクトルの加算 print(A-B) #ベクトルの減算

ベクトルの内積:

内積は2つの等しい次元のベクトルを取り、対応する成分の積を合計して、単一のスカラー値を返します。

式は次のようになります

Image by author

内積は可換的で分配的です。

a.b = b.ca.(b+c) = a.b + a.c

結果のスカラー値は、一方のベクトルが他方の中にどれだけ入るかを表します。

2つのベクトルが直交している場合、その内積は0となります。内積はまた、ベクトルの大きさや2つのベクトル間の角度を求めるためにも使用することができます。

Image from cuemath.com

いくつかの内積の例を見てみましょう。

Image by author

Pythonを使用した内積の例:

import numpy as np A = np.array([1,2,3,4]) #ベクトル1 B = np.array([-4,-3, -2, -1]) #ベクトル2 print(np.dot(A, B)) #内積

角度を求める例:

Image by author

行列:

行列は、m行n列のデータの量です。複数のベクトルを1つの行列に組み合わせることができます。行列は、大量のデータに対して操作を行うことができるため、行列量で方程式全体の表現など、さまざまな用途で役立ちます。行番号と列番号を使用して要素にアクセスすることもできます。

Image by author

上記では、行列の要素へのアクセス方法も示しています。たとえばA(1,2)は、1行目と2列目を示します。

Pythonを使用した行列の例:

import numpy as np A = np.array([[1,2],[3,4]]) #行列 print(A[1,1]) #行列Aの要素にアクセスする

行列の操作:

行列の加算と減算:

2つの行列が同じ形状である場合に行えます。

Image by author

Pythonの例:

import numpy as np A = np.array([[1,2],[3,4]]) #行列1 B = np.array([[-3,-2],[-4,-5]]) #行列2 print(A+B) #加算 print(A-B) #減算

行列の乗算:

これは、第1行列の各行と第2行列の各列のドット積を計算することによって機能します。

行列の次元がm x nとk x lの場合、n = kの場合のみ、乗算が可能です。

著者による画像
著者による画像

Pythonの例:

これを行う方法は2つあります。1つは「@」を使用する方法で、もう1つはnumpyモジュールの.matmul()を使用する方法です

import numpy as np A = np.array([[1,2],[3,4]]) #行列1 B = np.array([[-3,-2],[-4,-5]]) #行列2 print(np.matmul(A, B)) print(A@B)

両方のprint文は同じ結果を返します。

特殊行列:

特に3種類の特殊行列があります。

単位行列:

対角要素が1でそれ以外が0である正方行列です。単位行列によって行列を乗算すると、元の行列と同じになります。

ウィキペディアの画像

Pythonでは、numpy.eye() メソッドを使用して単位行列を作成することができます

import numpy as np identity = np.eye(4) #4x4の行列を作成します。

転置行列:

行と列を入れ替えて計算される行列です。”T”で表されます

ウィキペディアの画像

Pythonでは、.T を使用して行列を転置することができます

import numpy as np A = np.array([[1,2],[3,4]]) #行列 A_trans = A.T

置換行列:

別の行列の行と列を反転することができる正方行列です。要素のうち1つの要素だけが0以外であり、それ以外はすべて0です。

ウィキペディアの画像

行列Aの行を反転するには、置換行列Pを左側に乗算します(PA)。列を反転するには、置換行列Pを右側に乗算します(AP)

著者による画像

Pythonでこれを実装する方法については、ここをクリックして学びましょう。

行列形式の線形システム:

行列の非常に有用な応用は、線形方程式の連立方程式を解くためです。

以下の例を見てみましょう。

著者による画像

上記の方程式を以下に示す行列形式で記述します。

著者による画像

私たちの最終目標は、上記をAx = bの形式で表現することです。

著者による画像

Ax = b[A|b]と書くことができます。

著者による画像

NumPyのlinalgサブモジュールを使用して、これを行うことができます。

例:

著者による画像

上記の線形方程式を行列に変換しました。

A = np.array([[1,4,-1],[-1,-3,-2],[2, -1, -2]]) b = np.array([-1,2,-2]) x, y, z = np.linalg.solve(A, b)

逆行列:

「線形代数学では、n×nの正方行列Aが、AB = BA = Iであるようなn×nの正方行列Bが存在する場合、Aは可逆行列(または非特異行列)と呼ばれる」[2]

[2] Wikipedia

上記のように、行列の逆行列とその自身の積は単位行列です。すべての行列が逆行列を持つわけではありません。逆行列を持たない行列は特異行列と呼ばれます。

Pythonでの例:

import numpy as np A = np.array([[1,2],[3,4]]) print(np.linalg.inv(A))

その他:

  • NumPyの.zeros()を使用して、ゼロの行列またはベクトルを作成することができます。

例:

import numpy as np print(np.zeros((3,2)) # 3x2の寸法の行列を出力します。

  • ベクトルの「ノルム」は、NumPyのlinalgサブモジュールを使用して求めることができます。

例:

import numpy as np A = np.array([2,-4,1]) A_norm = np.linalg.norm(A) #给出结果4.5825

结论:

在这篇博客中,我们学到了:

  • 矩阵和向量是什么。
  • 对它们进行的操作。
  • 使用Python的NumPy模块实现了它们。
  • 我们甚至看到了不同类型的矩阵。

就是这样了,伙计们。我希望你们觉得有帮助,如果有的话,请在LinkedIn上关注我。

如果你喜欢我的工作,可以给我买杯咖啡:dataguy6@ybl

查看我的最新作品:

数据科学家必须使用DagsHub

开始和存储你的数据科学项目的最佳方式!

VoAGI.com

学习数据科学的最佳资源

你计划学习数据科学吗?🤩 但是不知道在哪里和如何学习?😫别担心,我来帮你……

VoAGI.com

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more