umap.UMAPを実行したら、「AttributeError: module ‘umap’ has no attribute ‘UMAP’」が出た時の対処法

Python
元教師
元教師

こんにちは!データサイエンティストの青木和也(https://twitter.com/kaizen_oni)です!

今回の記事では、次元削減手法のUMAPをPythonで実行しようとしたらAttributeErrorが出てしまった時の対処法をお教えいたします!

データ可視化学入門のコードを実行している最中に出てきてしまったエラーなので、少しびっくりしたのですが、落ち着いて対処すれば解決可能です!

本記事を参考に、コードを微調整していただいて、演習を続行していただければと思います!

エラーの内容

当該コードはデータ可視化学入門のP114の図4.3.6「画像データの次元削減」のコードを実行時に発生してしまいました。

なお、著者の江崎貴裕先生のGithubに公開されているコードを参考に、エラー部分に関係ないコードは削除した形で掲載しております。

from sklearn.datasets import load_digits 
import umap

digits = load_digits()
X = digits.data
y = digits.target

plt.axis('on')

umap_transformer = umap.UMAP(n_components = 2, random_state = 42)
X_umap = umap_transformer.fit_transform(X)

cluster_umap = KMeans(n_clusters=10, random_state = 42).fit_predict(X_umap)

plt.scatter(X_umap[:, 0], X_umap[:, 1], c = cluster_umap, cmap = 'jet')
plt.scatter(X_umap[:, 0], X_umap[:, 1], c = y, cmap = 'jet')

エラーの内容としては、「umapモジュールにUMAPなんてメソッド(または変数)はないよ」と言われてしまっています。

解決方法

上記エラーについては以下3ステップで解決していきます。

  • umap-learnをインストールする
  • インポート部分を書き換える
  • 実行コードを書き換える

umap-learnをインストールする

まずはpipまたはcondaを使用して、umap-learnというライブラリをインストールしましょう。

pip install umap-learn
または
conda install umap-learn

インポート部分を書き換える

続いてインポート部分を以下の通り書き換えていきます。

#import umap
from umap.umap_ import UMAP

実行コードを書き換える

最後に、上のステップでumapライブラリをインポートする形から、UMAPメソッドを直接インポートする形に書き換えたので、それを実行部分のコードに反映させていきます。

#umap_transformer = umap.UMAP(n_components = 2, random_state = 42)
umap_transformer = UMAP(n_components = 2, random_state = 42)

再度実行してみる

上記全てのステップを実行すると以下のようなコードが完成するので、早速実行してみましょう。

from sklearn.datasets import load_digits 
from umap.umap_ import UMAP

digits = load_digits()
X = digits.data
y = digits.target

plt.axis('on')

umap_transformer = UMAP(n_components = 2, random_state = 42)
X_umap = umap_transformer.fit_transform(X)

cluster_umap = KMeans(n_clusters=10, random_state = 42).fit_predict(X_umap)

plt.scatter(X_umap[:, 0], X_umap[:, 1], c = cluster_umap, cmap = 'jet')
plt.scatter(X_umap[:, 0], X_umap[:, 1], c = y, cmap = 'jet')

今度こそうまくUMAPによる次元削減が成功し、データの可視化を行うことができました!

まとめ

今回の記事では、データ可視化学入門でumap.UMAPを実行した際に、AttributeErrorが出てしまう場合の対処法について解説しました!

本書はデータ可視化に関する様々なトピック(手法、設計、考え方、見せ方etc..)が網羅的に掲載されており非常に参考になるかつ可視化コードも江崎先生のGithubに公開されているという太っ腹っぷりなので、引き続き本書を読み進めていただければと思います!

コメント

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