【AIプログラミング】scikit-learnの乳がんデータを確認、データ構造について熟知しよう

AIプログラミング

アヤメのデータは特徴量が4個なので、より多くの特徴量を持つ乳がんデータを分類してみました。

アヤメのデータよりは理解しづらくなってきたね。

scikit-learnには、乳がんのデータというものがあります。アヤメのデータよりも特徴量が多く、わくわくする仕様となっています。機械学習するにつけても、モデルの複雑さが必要となってくるはずです。

今回は、scikit-learnから読み込むことができる乳がんのデータについてみていきたいと思います。

アヤメのデータ分類はこちらをご参考ください。より基本的な事項はアヤメデータ分類の過程でいろいろ見てきました。

こんな人の役に立つかも

・機械学習プログラミングを勉強している人

・scikit-learnの乳がんデータについて知りたい人

スポンサーリンク

scikit-learnの乳がんデータ

乳がんデータは、scikit-learnの公式ドキュメントでも確認できます。

乳がんデータは、クラス数が2なので、データから、「malignant(悪性)」「benign(良性)」に分類する問題となります。2クラス問題ということになります。

サンプル数は全部で569個あり、悪性212個、良性357個のデータが存在しています。

特徴量は30もあります。30次元のデータということになりますね。

乳がんデータの確認プログラム

scikit-learnの乳がんデータは、次のようにしてimportします。scikit-learnは、いくつかの代表的なデータを「データセット」として検証などに利用できるようにしてくれています。今回も、scikit-learnの「datasets」というところからimportして利用します。

from sklearn.datasets import load_breast_cancer
#Pandasはデータを見やすくするためにimport
import pandas as pd

次のようにして、乳がんデータを変数に取り込みます。(変数名は自由です。)

panda_box = load_breast_cancer()

このようにscikit-learnから読み込むと、BunchというPythonの辞書型のような形でデータが変数に入ります。

乳がんデータの特徴量

乳がんデータに、どのような特徴量があるのかを確認します。アヤメのデータ構造と同様に、「feature_names」というものにアクセスすることで、特徴量を読み込むことができます。

dim = panda_box.feature_names
print(dim)
print(dim.shape)

shapeという機能で、(行、列)の個数を見ることができます。今回は、dimにfeature_namesを入れているので、「dim.shape」とすることで、データの個数を見ることができます。

['mean radius' 'mean texture' 'mean perimeter' 'mean area'
 'mean smoothness' 'mean compactness' 'mean concavity'
 'mean concave points' 'mean symmetry' 'mean fractal dimension'
 'radius error' 'texture error' 'perimeter error' 'area error'
 'smoothness error' 'compactness error' 'concavity error'
 'concave points error' 'symmetry error' 'fractal dimension error'
 'worst radius' 'worst texture' 'worst perimeter' 'worst area'
 'worst smoothness' 'worst compactness' 'worst concavity'
 'worst concave points' 'worst symmetry' 'worst fractal dimension']
(30,)

shapeは(30行, )のみということで、ただの30個のデータの配列であることがわかります。中身をみると、乳がんに関する特徴のラベル(収集したデータの項目名)が入っていることがわかります。

医者じゃないので、詳細な特徴量についてはよくわかりません・・・

とりあえず、次元数の多いデータということで分類の検証用に使わせてもらおう。

実際のデータ

先ほどの特徴量のデータは「data」に入っています。これもアヤメデータと同じですね。shapeでデータを確認します。

#データの個数を確認
data = panda_box.data
print(data.shape)

569行30列のデータが出てきました。30列という部分が先ほどの「feature_names」と対応していますね。

(569, 30)

表としてデータが見やすいように、pandasでデータを表形式にして確認してみます。

ata_confirm = pd.DataFrame(data, columns=dim)
print(data_confirm)
     mean radius  mean texture  ...  worst symmetry  worst fractal dimension
0          17.99         10.38  ...          0.4601                  0.11890
1          20.57         17.77  ...          0.2750                  0.08902
2          19.69         21.25  ...          0.3613                  0.08758
3          11.42         20.38  ...          0.6638                  0.17300
4          20.29         14.34  ...          0.2364                  0.07678
..           ...           ...  ...             ...                      ...
564        21.56         22.39  ...          0.2060                  0.07115
565        20.13         28.25  ...          0.2572                  0.06637
566        16.60         28.08  ...          0.2218                  0.07820
567        20.60         29.33  ...          0.4087                  0.12400
568         7.76         24.54  ...          0.2871                  0.07039

[569 rows x 30 columns]

答えデータの確認

答えのデータにはどのようなものがあるかを「target_names」で確認できます。

target_name = panda_box.target_names
print(target_name)
['malignant' 'benign']
「malignant」が悪性、「benign」が良性となります。このように、「悪性」「良性」の二つのラベルがあることがわかります。そのため、乳がんデータの分類は、2クラス問題となります。

答えデータの中身は、「target」に入っています。shapeでデータの個数を確認しています。

#答えデータ数も確認してみます。
target = panda_box.target
print(target.shape)
(569,)
答えデータも、「data」と同数、569個あることが確認できました。

基本的に、アヤメデータと同じようにアクセスできて便利。

ありがたく使わせてもらおう。

タイトルとURLをコピーしました