こんにちは!データサイエンティストの青木和也(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に公開されているという太っ腹っぷりなので、引き続き本書を読み進めていただければと思います!
コメント