SAS Viyaでデータの分布を確認する


SAS ViyaはAIプラットフォームになります。Webブラウザ上で機械学習の設計、実行ができるStudioという環境も用意されていますが、開発者はプログラミングコードで開発することも可能です。プログラミング言語はJava/Python/R/SASが選べます。

機械学習を用いる際に専用のテーブル(casTable)を用いますが、今回はデータの分布を調べる方法を紹介します。

データを確認する

今回は organics.sas7bdat を用います。

organics = sess.upload('organics.sas7bdat')

データは以下のようになっています。

organics.casTable.head()
Selected Rows from Table ORGANICS
CUSTID GENDER DOB EDATE AGE AGEGRP1 AGEGRP2 TV_REG NGROUP NEIGHBORHOOD LCDATE ORGANICS BILL REGION CLASS ORGYN AFFL LTIME
0 0000000140 U 1921-09-16 1998-02-23 76.0 60-80 70-80 Wales & West C 16 1994-11-07 0.0 16000.00 Midlands Gold 0.0 10.0 4.0
1 0000000620 U 1949-02-12 1998-02-23 49.0 40-60 40-50 Wales & West D 35 1993-06-04 0.0 6000.00 Midlands Gold 0.0 4.0 5.0

表示するデータを指定する

今回は年齢ごとにデータを確認します。

organics.casTable.percentile(inputs='AGE')

データが出力されます。

§ Percentile
Percentiles for ORGANICS
Variable Pctl Value Converged
0 AGE 25.0 44.0 1.0
1 AGE 50.0 54.0 1.0
2 AGE 75.0 64.0 1.0

さらにデータをその分布に応じて分割します。

organics.casTable.percentile(inputs='AGE', values=list(range(5,95,5)))

そうするとデータが5%刻みで分割されたのが分かるでしょう。

§ Percentile
Percentiles for ORGANICS
Variable Pctl Value Converged
0 AGE 5.0 32.0 1.0
1 AGE 10.0 36.0 1.0
17 AGE 90.0 72.0 1.0

さらにデータを性別でグルーピングします。元々の表では両性別が混在しています。

organics.casTable.groupby = ['GENDER']
result = organics.casTable.percentile(inputs='AGE', values=list(range(5,95,5)))

そしてそのデータをグラフ出力します。

df = result.concat_bygroups()['Percentile']
df.reset_index(level=0, inplace=True)
p = Scatter(df, x='Pctl', y='Value', legend='top_center', marker='GENDER')
output_file('scatter.html')
show(p)

そうすると性別ごと(UはUnknown)も含めてデータの分布が可視化されます。


Pythonを使うことでデータの傾向が可視化され、分析を行う前に全体像が把握できるようになります。ぜひPythonライブラリを使ってSAS Viyaの分析に役立ててください。