前提・実現したいこと
データの分布を、ガウス混合モデルを使用して可視化したいのですが、
def gen_data()内のreturnするところで
Instance of 'tuple' has no 'data' member
Instance of 'tuple' has no 'target' member
というエラーが出てしまいます。
エラー解消方法をいろいろと調べてみたのですが、解決に至りませんでした。
解決方があれば教えて頂きたいです。よろしくお願いします。
発生している問題・エラーメッセージ
Instance of 'tuple' has no 'data' member Instance of 'tuple' has no 'target' member
該当のソースコード
import numpy as np from sklearn.datasets import load_iris from sklearn.decomposition import PCA from sklearn.cluster import KMeans as KM from sklearn.mixture import GaussianMixture as GMM from matplotlib import pyplot as plt from skfuzzy.cluster import cmeans def target_to_color(target): if type(target) == np.ndarray: return (target[0], target[1], target[2]) else: return "rgb"[target] def plot_data(data, target, filename="fig.png"): plt.figure() plt.scatter(data[:,0], data[:,1], c=[target_to_color(t) for t in target]) plt.savefig(filename) def gen_data(): iris = load_iris() pca = PCA(n_components=2) return pca.fit_transform(iris.data), iris.target def main(): data, target = gen_data() plot_data(data, target, filename="origin.png") gmm = GMM(n_components=3, max_iter=1000) gmm.fit(data) gmm_target = gmm.predict(data) gmm_target_proba = gmm.predict_proba(data) plot_data(data, gmm_target, filename="gmm.png") plot_data(data, gmm_target_proba, filename="gmm_proba.png") if __name__ == "__main__": main()
補足情報
Python 3.8.5