Schema

SchemaはLoaderで読み込んだレコードの各カラムの意味を定義します。Schemaの基本的な使い方は、各カラムのデータ型を1つずつ定義することです。以下の例では、 nameage カラムはそれぞれテキスト特徴量、数値特徴量として利用され、 gender カラムはClassifierを学習する際の教師ラベルとして利用されます。

from jubakit.classifier import Schema

schema = Schema({
  'name': Schema.STRING,
  'age': Schema.NUMBER,
  'gender': Schema.LABEL,
})

フォールバック型

Loaderから読み込まれたレコードの各カラムのデータ型は必ず定義する必要があります。もし大量のカラムが存在する場合、分析を行いたい一部のカラムを残して、その他のカラムを無視することができます。以下の例では、 nameage および gender 以外のカラムは全て無視され、分析対象外となります。

schema = Schema({
  'name': Schema.STRING,
  'age': Schema.NUMBER,
  'gender': Schema.LABEL,
}, Schema.IGNORE)

同様に、もし全てのカラムが数値型であることが予め分かっている場合、以下のようすることで、全てのカラムを数値型として読み込むことができます。

schema = Schema({}, Schema.NUMBER)

キー名の変更

デフォルトでは、Loaderから渡されたカラム名がそのままDatumのキー名として利用されますが、Schema内でキーの名前を変更することができます。以下の例では、 user_nameuser_profile がそれぞれ nameprofile という名前に変換され、Datumのキーとして渡されます。

schema = Schema({
  'user_name': (Schema.STRING, 'name'),
  'user_profile': (Schema.STRING, 'profile'),
})

キー名の変更は複数のデータソースから取得したレコードを利用して学習を行う場合に便利です。

データ型一覧

以下にSchemaで指定可能なデータ型一覧を示します。

データ型 説明
NUMBER 数値特徴量
STRING テキスト特徴量
BINARY バイナリ特徴量
INFER 自動推論された特徴量 [1]
AUTO Loaderから渡された特徴量 [2]
LABEL ラベル (Classifierのみ)
TARGET 目的変数 (Regressionのみ)
FLAG 異常フラグ (Anomalyのみ)
ID レコードを特定するためのID (Anomaly、Recommenderのみ)
IGNORE そのカラムを無視する
[1]INFER では、各キーについて NUMBERSTRING および BINARY への型変換を試行し、変換が成功したデータ型が利用されます。データ型推論は各レコードに対して行われるため、同じキーでもレコード間で異なるデータ型へと推論されることがある点に注意してください。
[2]AUTO は、RDBMSのような型付きデータソースからデータを読み込むLoaderを利用する場合に指定することができます。CSVファイルから CSVLoader を利用して読み込んだデータは必ず ``STRING`` 型になる点に注意してください。