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)も含めてデータの分布が可視化されます。

Screenshot_ 2019-02-08 16.32.33.png


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