PandasのデータフレームをScikit-learnの入力データに変換する方法(1.要件定義)

概要

Pythonでデータ分析する際に必須のpandasscikit-learnは、現状入力IFが整っておらず、「pandasで読み込んだデータをそのままscikit-learnの分析ライブラリに投入」ということができません。これは分析を始めようとした際に厄介なポイントなので、対策を考えて汎用コードを書いてしまおう、というのが今回の記事です。

データ構造の確認

まずはpandasとscikit-learnのデータ構造を確認してみましょう。

Pandasのデータ構造

pandasを使ってirisのデータを読み込んでみます。

import pandas as pd
df = pd.read_csv("iris.csv", index_col=0)

spyderのVariable explorerで確認するとこんな感じ。


pandas_iris

ざっくり以下の特徴があります。

  • 1つのテーブルで完結
  • Indexとcolumnを持つ
  • 数値データと文字データが混在

Scikit-learnのデータ構造

sklearnを使ってirisのデータサンプルを読み込んでみます。

from sklearn import datasets
sample = datasets.load_iris()

同様にspyderのVariable explorerで確認するとこんな感じ。


sklearn_iris

pandasのデータフレームとはかなり形状が違うことが分かります。

  • 5つのメンバを持つ(データ名、説明変数のデータ、 説明変数のカラム名、目的変数のデータ、目的変数の名称
  • 各データはNumpy配列
  • 各データは数値データのみ

データ変換要件

PandasからScikit-learnのデータに構造を変換するためには、以下の作業が必要なことが分かりました。

  1. 説明変数のデータ列と目的変数のデータ列に分ける
  2. 説明変数のデータを下記の通り変換する
    • 数値データはそのまま
    • カテゴリデータはバイナリ化
    • それ以外のデータ(時系列等)は除外
  3. 説明変数のデータとカラム名を分けてオブジェクトのメンバに割り付ける
  4. 目的変数のデータをシリアル化する
  5. 目的変数の値と名称を分けてオブジェクトのメンバに割り付ける
  6. データセットの名称をオブジェクトのメンバに割り付ける

次の記事でコーディングを進めていきます。

PandasのデータフレームをScikit-learnの入力データに変換する方法(2.コーディング)






コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA