このような問題の調べ方
python
1>>> dir(iris_datasets)
2['DESCR', 'data', 'feature_names', 'filename', 'frame', 'target', 'target_names']
3>>> iris_datasets.DESCR.__class__
4<class 'str'>
これを見ると、DESCRはiris_datasetsの属性であり、値がstrのインスタンスであることがわかります。
python
1>>> iris_datasets.__class__
2<class 'sklearn.utils.Bunch'>
なので、iris_datasetsのクラスはsklearnモジュールのサブモジュールであるBunchというクラスであることがわかります。
Bunchの説明を見てみましょう。helpを使ってもよいのですが、見終わると消えてしまうのが嫌なので、私は以下のようにしてみています。
python
1>>> print(iris_datasets.__class__.__doc__)
2Container object exposing keys as attributes
3
4 Bunch objects are sometimes used as an output for functions and methods.
5 They extend dictionaries by enabling values to be accessed by key,
6 `bunch["value_key"]`, or by an attribute, `bunch.value_key`.
7
8 Examples
9 --------
10 >>> b = Bunch(a=1, b=2)
11 >>> b['b']
12 2
13 >>> b.b
14 2
15 >>> b.a = 3
16 >>> b['a']
17 3
18 >>> b.c = 6
19 >>> b['c']
20 6
ソースを見るために、sklearnがどこにあるかを調べてみましょう。
python
1>>> import sklearn
2>>> print(sklearn)
3<module 'sklearn' from 'C:\Users\user\anaconda3\lib\site-packages\sklearn\__init__.py'>
C:\Users\user\anaconda3\lib\site-packages\sklearn にあることがわかります。
Bunchについて調べたければ、
C:\Users\user\anaconda3\Lib\site-packages\sklearn\utils_init_.py を読みます。
63行目にBunchクラスの定義が見つかります。しかし、そこには、DESCRは出てきません。
これは、DESCRがBunchクラスのインスタンスとして必ずあるものとは限らないことを示しています。
このことから、DESCRはインスタンス作成時または作成後に設定された属性であることがわかります。
そこで作成している関数datasets.load_irisを調べます。
そのためには、
C:\Users\user\anaconda3\Lib\site-packages\sklearn\datasets_init_.py を読みます。
11行目に以下のように書かれています。
python
1from ._base import load_files
2from ._base import load_iris
3from ._base import load_linnerud
つまり、load_irisは以下のファイルにあります。
C:\Users\user\anaconda3\Lib\site-packages\sklearn\datasets_base.py
あとは、_base.pyの387行目から499行目を読んでください。
わからない点があったら、また聞いてください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/02 13:08
2020/12/02 13:56