SAS ViyaはAIプラットフォームになります。Webブラウザ上で機械学習の設計、実行ができるStudioという環境も用意されていますが、開発者はプログラミングコードで開発することも可能です。プログラミング言語はJava/Python/R/SASが選べます。
機械学習を用いる際に専用のテーブル(casTable)を用いますが、今回はそのテーブルオブジェクト(Python版)で条件を指定してデータを取得する方法を解説します。
テーブルの作り方
テーブルはCSV、HTML、他のデータベースなどから作れます。
out = sess.upload('Jupyter_Saved_Work/Data/iris.csv')
ファイルをアップロードした後、casTableとして取得します。
iris = out.casTable
条件付けはwhereを使う
SQLと同じようにcasTableでもwhereが使えます。ただし、これはPythonなので、O/Rマッパー風に使います。そこで set_params を使います。
iris.set_params('where', 'SepalLength > 6.8')
またはparamsパラメータに直接設定します。
iris.params.where = 'Name = "Iris-versicolor"'
なお、where を新しく設定すると上書きになってしまうので注意してください。以下の場合、下の条件が有効になります。
iris.set_params('where', 'SepalLength > 6.8')
iris.set_params('where', 'Name = "Iris-versicolor"')
そのため、複数条件を指定する場合には and を使います。
iris.set_params('where', 'SepalLength > 6.8 and Name = "Iris-versicolor"')
計算式を入れる
あるカラム同士を計算した結果を結果に出したい場合には computedvars という定義をします。
iris.set_params('computedvars', ['length_factor'])
そして computedvarsprogram を定義して、カラムの値を指定します。
iris.set_params('computedvarsprogram', 'length_factor = SepalLength * PetalLength')
そうすると結果にlength_factorが追加されます。
iris.fetch(to=3)
SepalLength | SepalWidth | PetalLength | PetalWidth | Name | length_factor |
---|---|---|---|---|---|
0 | 7.0 | 3.2 | 4.7 | 1.4 | Iris-versicolor |
1 | 6.4 | 3.2 | 4.5 | 1.5 | Iris-versicolor |
2 | 6.9 | 3.1 | 4.9 | 1.5 | Iris-versicolor |
条件式を確認する
条件式が設定されているかどうかは has_param で確認できます。
iris.has_params('where')
=> True
その内容は get_param で確認できます。
iris.get_param('where')
=> 'Name = "Iris-versicolor"'
条件式を削除する
whereを削除する場合には del を使います。
del iris.params.where
これでwhere条件が消えます。
iris.has_params('where')
=> False
機械学習を実行する前のデータクレンジングなどの時点において、データを細かく確認したい時があるかと思います。whereの他、group byやcomputedvarsなども用意してありますので、これらをぜひ使いこなしてください。