8.3 グラフィックのレンダリング

OML4Pyには、データのグラフィック表示をレンダリングするための関数が用意されています。

oml.boxplotおよびoml.hist関数は、ボックス・アンド・ウィスカー・プロットまたはヒストグラムを生成するために必要な統計をデータベース内で計算することで、スケーラビリティとパフォーマンスを向上させます。

OML4Pyは、matplotlibライブラリを使用して出力をレンダリングします。matplotlib.pyplotのメソッドを使用して、作成されたイメージをカスタマイズし、matplotlib.pyplot.showを使用してイメージを表示できます。デフォルトでは、レンダリングされたグラフィックのプロパティは、matplotlib.rcParamsに格納されているものと同じです。

oml.boxplotおよびoml.hist関数のパラメータについては、help(oml.boxplot)またはhelp(oml.hist)を呼び出すか、Oracle Machine Learning for Python APIリファレンスを参照してください。

ボックス・プロットの生成

oml.boxplot関数を使用して、xのそれぞれの列またはx内のそれぞれの列オブジェクトについてボックス・アンド・ウィスカー・プロットを生成します。

例8-19 oml.boxplot関数の使用

この例では、最初にsklearnからwineデータセットをロードし、pandas.DataFrameオブジェクトwine_dataを作成します。次に、wine_dataから一時データベース表とそれに対応するプロキシoml.DataFrameオブジェクトoml_wineを作成します。oml_wineの8から12の範囲(12を含まない)の索引を持つそれぞれの列に基づいてボックス・アンド・ウィスカー・プロットを描画します。引数showmeansおよびmeanlineは、算術平均を表示し、平均をボックスの全幅にわたる線としてレンダリングするようにTrueに設定します。引数patch_artistは、ボックスがパッチ・アーティストで描画されるようにTrueに設定します。

import oml
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import datasets

wine = datasets.load_wine()
wine_data = pd.DataFrame(wine.data, columns = wine.feature_names)
oml_wine = oml.push(wine_data)
oml.graphics.boxplot(oml_wine[:,8:12], showmeans=True, 
                     meanline=True, patch_artist=True, 
                     labels=oml_wine.columns[8:12])
plt.title('Distribution of Wine Attributes')
plt.show()

この例の出力は次のようになります。

wine_boxplot.pngの説明が続きます
図wine_boxplot.pngの説明

この図は、wineデータセットの4つの列(Proanthocyanins、Color intensity、HueおよびOD280/OD315 of diluted wines)それぞれに関するボックス・アンド・ウィスカー・プロットを示しています。ボックスはデータの下位四分位値から上位四分位値まで伸び、中央値にはオレンジ色の実線が表示されています。ボックスから伸びるウィスカーはデータの範囲を示しています。上限は、ウィスカーの終点にある横線です。フライヤまたは外れ値の点は、ウィスカーの終点を通り越したものです。平均は、各ボックスの幅にまたがる緑色の点線として表示されています。

ヒストグラムの生成

oml.hist関数を使用して、xに含まれているそれぞれのデータセット列についてヒストグラムを計算して描画します。

例8-20 oml.hist関数の使用

この例では、最初にsklearnからwineデータセットをロードし、pandas.DataFrameオブジェクトwine_dataを作成します。次に、wine_dataから一時データベース表とそれに対応するプロキシoml.DataFrameオブジェクトoml_wineを作成します。次に、oml_wineのproline列に基づいてヒストグラムを描画します。引数binsでは、10個の等幅ビンを生成することを指定します。引数colorでは、棒を紫色で塗りつぶすことを指定します。引数linestyleおよびedgecolorは、棒のエッジをピンク色の実線として描画するように設定します。

import oml
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_wine

wine = load_wine()
wine_data = pd.DataFrame(wine.data, columns = wine.feature_names)
oml_wine = oml.push(wine_data)
oml.graphics.hist(oml_wine['proline'], bins=10, color='red',
                  linestyle='solid', edgecolor='white')
plt.title('Proline content in Wine')
plt.xlabel('proline content')
plt.ylabel('# of wine instances')
plt.show()

この例の出力は次のようになります。

proline_hist_rw60.pngの説明が続きます
図proline_hist_rw60.pngの説明

この図は、wineデータセットのProline列に関する従来の棒型のヒストグラムを示しています。proline値の範囲は、同じサイズの10個のビンに分割されています。各ビンの矩形の棒の高さは、各ビン内のワイン・インスタンスの数を示しています。棒は赤色で、エッジは白色の実線です。