Schema¶
SchemaはLoaderで読み込んだレコードの各カラムの意味を定義します。Schemaの基本的な使い方は、各カラムのデータ型を1つずつ定義することです。以下の例では、 name
と age
カラムはそれぞれテキスト特徴量、数値特徴量として利用され、 gender
カラムはClassifierを学習する際の教師ラベルとして利用されます。
from jubakit.classifier import Schema
schema = Schema({
'name': Schema.STRING,
'age': Schema.NUMBER,
'gender': Schema.LABEL,
})
フォールバック型¶
Loaderから読み込まれたレコードの各カラムのデータ型は必ず定義する必要があります。もし大量のカラムが存在する場合、分析を行いたい一部のカラムを残して、その他のカラムを無視することができます。以下の例では、 name
、 age
および gender
以外のカラムは全て無視され、分析対象外となります。
schema = Schema({
'name': Schema.STRING,
'age': Schema.NUMBER,
'gender': Schema.LABEL,
}, Schema.IGNORE)
同様に、もし全てのカラムが数値型であることが予め分かっている場合、以下のようすることで、全てのカラムを数値型として読み込むことができます。
schema = Schema({}, Schema.NUMBER)
キー名の変更¶
デフォルトでは、Loaderから渡されたカラム名がそのままDatumのキー名として利用されますが、Schema内でキーの名前を変更することができます。以下の例では、 user_name
と user_profile
がそれぞれ name
と profile
という名前に変換され、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 では、各キーについて NUMBER 、STRING および BINARY への型変換を試行し、変換が成功したデータ型が利用されます。データ型推論は各レコードに対して行われるため、同じキーでもレコード間で異なるデータ型へと推論されることがある点に注意してください。 |
[2] | AUTO は、RDBMSのような型付きデータソースからデータを読み込むLoaderを利用する場合に指定することができます。CSVファイルから CSVLoader を利用して読み込んだデータは必ず ``STRING`` 型になる点に注意してください。 |