pandasでデータフレームから特徴量とターゲットの配列を切り出す
機械学習アルゴリズムにデータを入れていざ学習させよう、というときには当たり前ですが データフレームの形式のままでは無理です。 データフレームから特徴量とターゲット(正解)を配列として切り出してやる必要があります。
まずpandas.DataFrame
で作られたデータフレーム df
があるとします。
A, Bが特徴量でCがターゲットとしましょう。
A B C 0 a b c 1 a b c 2 a b c
特徴量を切り出すには以下のようにします。
features = df.ix[:, 'A':'B'] X = features.values
pandas.DataFrame.ix
を使うと行と列を指定してデータを切り出す事ができます。
行・列番号または行・列ラベルで切る取る対象を指定可能です。
以下の記事が詳しかったです。
記事にある通り、loc
や iloc
で指定する方法もあります。
次に、pandas.DataFrame.values
を使うとデータフレームからラベルを除いたデータだけの配列を取得することができます。
つまり、X
は以下のようになります。
[['a' 'b'] ['a' 'b'] ['a' 'b']]
この調子でターゲットも切り出しましょう。
y = df['C'].values
以下のようになります。
['c' 'c' 'c']
ちなみに特徴量 X
が大文字なのは行列だから、 y
が小文字なのはベクトルだから、慣習的にこのように書くようです。