テーブルデータ(構造化データ)
#データの理解と前処理
テーブルデータ(構造化データ)
縦の並び(列)を変数(項目、フィールド)が、横の並び(行)を1件1件のデータ(レコード、インスタンス)として、きっちりと整理されたデータ
https://gyazo.com/146f446873a2687ff330d02a7563cf60
このような形式のデータをテーブルデータといい、機械学習を実行する際にはこのような形式のデータを用意しておく必要がある
構造化データとも呼ばれる
RDB(relational database)のようなデータベースやCSV(comma-separated values)ファイルなどで管理できる
データが構造化されているため、集計、検索などがしやすい
構造化データを作る
研究・学習用に公開されている機械学習用のデータセットや、いろんな学習用書籍・サイト等で公開されているデータは、すでにこのようなテーブルデータになっているので扱いやすいが、実問題では、さまざまなデータをつなぎあわせたり、非構造化データを整理したりして、機械学習が扱えるテーブルデータを自分で作らないといけない
詳しくは構造化データを作るにて
テーブルデータを機械学習で扱う
たとえばIrisデータによる機械学習の例でも扱ったiris(アヤメ)のデータ
IrisデータをGoogleスプレッドシートにおいたものはこちら(参考)
IrisデータをCSVファイルにしたものはこちら(参考)
https://gyazo.com/f5ef663644a52d2e4ba4dcf6d44d70db
Colabで表示するとこんな感じ
https://gyazo.com/4783336d0f114be677ef3db6ba23dd14
データと実物のイメージ
https://gyazo.com/10ddc411daf38e2d1f7cecd3a46f304c
図は、S. Raschkaほか『Python機械学習プログラミング』(2020)より引用
テーブルデータとベクトル・行列
機械学習で扱うためには、データを行列として扱える形でもっておくことが重要(必要)
説明変数(特徴量ともいう)は4つ、データ数は150なので、150(行)×4(列)の行列で表現
$ \begin{pmatrix} x_1^{(1)} & x_2^{(1)} & x_3^{(1)} & x_4^{(1)} \\\ x_1^{(2)} & x_2^{(2)} & x_3^{(2)} & x_4^{(2)} \\\ \vdots & \vdots & \vdots & \vdots \\\ x_1^{(150)} & x_2^{(150)} & x_3^{(150)} & x_4^{(150)} \end{pmatrix}
1件1件のデータは、行ベクトルで表される。たとえば$ i番目のデータはこれ
$ \boldsymbol x^{(i)} = \begin{pmatrix} x_1^{(i)} & x_2^{(i)} & x_3^{(i)} & x_4^{(i)} \end{pmatrix}
各説明変数は、列ベクトルとして扱える。たとえば$ j番目の説明変数は150次元の列ベクトルとしてこうなる
$ \boldsymbol x_j = \begin{pmatrix} x_j^{(1)} \\\ x_j^{(2)} \\\ \vdots \\\ x_j^{(150)} \end{pmatrix}
この場合、1列目$ (j = 1)はSepal length、2列目$ (j = 2)はSepal width、3列目$ (j = 3)はPetal length、4列目$ (j = 4)はPetal widthの、各データの値が入った列ベクトルを表わすことになる
目的変数も、列ベクトル$ \boldsymbol yとして表わされる(各要素は、各行のクラスラベル)
$ \boldsymbol y = \begin{pmatrix} y^{(1)} \\\ y^{(2)} \\\ \vdots \\\ y^{(150)} \end{pmatrix} (y \in \{ \rm{Setosa, Versicolor, Virginica} \})
テーブルデータとデータフレーム
Pythonにおける機械学習では、Pandasライブラリを使ったデータフレーム(テーブルデータを便利に扱うための機能・データの「容れ物」のイメージをもとう)を用いることが多い
データフレームとしてデータをもつことで、行列やベクトルとしての管理・処理・演算などがしやすくなる
Rなどでも同じくデータフレームで処理する
機械学習に限らず統計的なデータ処理においてはデータフレームを扱うことがほとんどなので、慣れましょう