揃えないと積を求めることができません。上記の掛け算で行われている処理を図解すると、以下のようになります。行列のインデクシング先ほど紹介したインデクシングは、行列を扱う際にさらに役立ちます。行列のアグリゲーション(集約)1次元ベクトルと同じように、行列においてもアグリゲーション機能を用いることができます。用いて軸を指定することで、同じ行、あるいは同じ列にある値に対してアグリゲーションを行うこともできます。指定すると同じ列にある値をまとめることができます。行列を扱う上で、行列を回転させて行と列を入れ替える必要が出てくることもあります。ドット積を求めるために2つの行列間の列数と行数を揃えなければならない場合などです。高度なケースでは、ある行列の次元を変換しなければならない場合もあるでしょう。これは機械学習ではよくあるケースで、元となるデータセットとは異なる形でデータを入力しなければならない場合などです。引数として渡すのは、変換後に得たいデータの行数・列数です。行数・列数のどちらかに-1を渡した場合、NumPyはもう片方の値から適切な値を自動で推測し、変換を行ってくれます。多次元への応用NumPyは、これまで紹介した全ての機能を、さらなる多次元配列に対しても適用することができます。その核となるデータ構造は「N次元配列」と呼ばれます。使ってN次元配列を生成するには、引数のタプルで生成したい配列の型を指定します。実用的な使い方ここからは、上杉周作の訳になります。それでは、学んだことを活かしてみましょう!NumPyが役に立つ場面をいくつか紹介します。数式を実装する行列やベクトルを用いた数式をPythonで実装する際にNumPyはとても役立ちます。これが、科学技術計算でNumPyが重宝される一番の理由です。Error(平均二乗誤差)の式を見てみましょう。教師あり学習における回帰分析問題を解くのに必要不可欠な式です。NumPyを使えば、MSEをたやすく実装することができます:NumPyを使う利点のひとつは、predictionsやlabelsの中に入っている値がひとつであろうと1000個であろうと関係なく計算できることです。(predictionsとlabelsの大きさが同じである必要はありますが。)上のコードを、適当なpredictionsとlabelsの例を用いてステップごとに追ってみましょう:predictionsとlabelsのベクトルには、それぞれ3つの値が入っています。いうことは、nに3を代入します。ベクトルの引き算をすると、次のようになります:続いて、ベクトルの値をすべて二乗します:最後に、ベクトルの値を合計します:出てきた値が、モデルの精度を表す平均二乗誤差というわけです。データ表現スプレッドシート・画像・音声などのデータを処理したり、それらをもとにモデルを構築する際には、まずはN次元配列でデータを表現することからはじめます。スプレッドシート(表計算)スプレッドシートの値は行列(2次元配列)で表現することができます。ひとつのファイルに複数のシートがある場合、それぞれのシートを変数に保存すればいいでしょう。いったデータを扱う際には、PandasのDataFrameが最もよく使われています。ちなみにPandasはNumPyが基になっています。音声データと時系列データ音声データは標本値の1次元配列で表現することができます。それぞれの標本値は、音声信号の小さな一部分を表しています。CD並みの音質の音声データには1秒あたり4万4100の標本値が必要で、それぞれの値は-65535から65536の間になります。44万1000のNumPy配列で表すことができます。これをaudioという変数に入れたとして、最初の1秒だけを取り出したければ、audio[:44100]とすれば良いのです。音声データの抽出を図で表すと、次のようになります:他にも、たとえば株価の変動といった時系列データも同じように表現できます。画像データ画像データは、ピクセルの行列(縦×横)の集合です。白黒(グレースケール)画像の場合、それぞれのピクセルを0(黒)から255(白)の数字で表すのが一般的です。:10]と指定すればOKです。カラー画像の場合、それぞれのピクセルは赤・緑・青の数値で表されます。この場合、2次元の行列ではデータを表現しきれないので、3次元の配列(縦×横×3)が必要になります。言語を扱う場合は、これまでとちょっと違います。文章を数字で表すためには、その言語モデルに登場しうるすべての単語をリスト化し、さらに「単語埋め込み」を行う必要があります。unsung?言語モデルを作る際にはまず、膨大な量の文章を読み込まなければいけません。いうわけで、こちらのデータセットをもとに、7万1290の単語をリスト化しました。続いて、先ほどの文を単語の配列にします。(それぞれの値を単語ではなく、単語の一部分にするほうが良い場合もあります)続いて、それぞれの値を単語リストで該当する番号に変えます。これだけでは、モデルが学習をするための情報が足りません。そのため、まず先に単語を分散表現(単語埋め込み)で表す必要があります。単語の数」になります。分散表現の次元」を使うのですが、図を分かりやすくするためにこうしています。)深層学習を使う場合、並列処理による高速化を実現するため、ひとつめの次元はバッチサイズを使うことが多いです。この際、reshape()がとても役に立ちます。BERTのようなモデルの場合、入力する配列の次元は「バッチサイズ×単語の数×分散表現の次元」になります。このように文章を数値化することで、モデルが学習したり予測できるようになります。ちなみに上記の図では他の行が空になっていますが、ここには他の文を表す数値が入ります。sayazamurai38@gmail.comフォローこのクリエイターの人気記事NYタイムズの記者も使っている、データ・ストーリーの王道パターン7選716Saya【翻訳校閲】Slackの公式ブログは私ならこう訳す。【翻訳校閲】Slackの公式ブログは私ならこう訳す。記事まとめデータ分析に関する記事のまとめです。クリエイターへのお問合せnoteカイゼン目安箱クリエイターの。