質問: load_iris()`とすると普通にできるのはなぜでしょう?二つは同じではないですか?多分私の理解が間違っているのだと思いますが、教えていただけると嬉しいです。理解が浅くて申し訳ないです。
回答: 細かい理屈はおいといて、実際の格納パスから`load_iris`関数を探してみましょう。 ``` (pythonのパス)\Lib\site-packages\sklearn │ (略) │ __init__.py <-A (略) ├───datasets │ │ base.py <-C │ │ (略) │ │ __init__.py <-B (略) ``` まず`import sklearn`では`A`が実行されますが、`A`および`A`内でインポートされたファイルには`datasets`も`load_iris`も含まれていません。 よって`AttributeError:~`が発生します。 一方`from sklearn.datasets import load_iris`では`B`が実行されます。 ``` # 略 from .base import load_iris # 略 ``` とあるので`C`がインポートされます。 ``` # 略 def load_iris(return_X_y=False): """Load and return the iris dataset (classification). # 略 ``` で`load_iris`が見つかりました。