2017-04-18 12 views
0

Feature1、Feature2、Feature3の3つの機能をクラスタ化し、2つのクラスタを作成しました。 matplotlibを使用して3Dクラスタを視覚化しようとしています。matplotlibを使用した3Dクラスタリングの可視化

以下の表には、クラスタリングが実行される3つの機能があります。しかし、私はエラーを取得し"ValueError: could not convert string to float: red"

fig = plt.figure() 
    ax = fig.add_subplot(111, projection='3d') 
    x = np.array(df['Feature1']) 
    y = np.array(df['Feature2']) 
    z = np.array(df['Feature3']) 
    ax.scatter(x,y,z, marker=colormap[kmeans.labels_], s=40) 

:クラスタの数は、このコードを試してみました。2.

Feature1  Feature2 Feature3 ClusterIndex 
    0 1.349656e-09 1.000000 1.090542e-09 0 
    1 1.029752e-07 1.000000 6.040669e-08 0 
    2 2.311729e-07 1.000000 1.568289e-11 0 
    3 1.455860e-08 6.05e-08 1.000000  1 
    4 3.095807e-07 2.07e-07 1.000000  1 

です。したがって、マーカー部分はエラーが発生する箇所です。

クラスタの2D視覚化は、点を散布図にプロットし、クラスタラベルで区別することによって非常に簡単です。

クラスタの3Dビジュアリゼーションを行う方法がありますか?

どのような提案も高く評価されます。

+0

私はエラーが出る "とValueErrorを:float型に文字列を変換できませんでした:赤"。マーカー部分は私がエラーを得る場所です。文字列を浮動小数点に変換することはできません。型キャスティングは役に立ちません。 2Dプロットでは動作しますが、3Dプロットではうまくいかない理由は不明です。 – user3447653

+0

したがって、 '' colormap''と 'kmeans.labels_''とは何ですか? – ImportanceOfBeingErnest

+0

@ ImportanceOfBeingErnest:kmeans.labelsは0と1のようなクラスターインデックスです(私は2つのクラスターを持っています)。カラーマップはラベルをカラーに変換します。 – user3447653

答えて

1

原則として、質問のコードが機能するはずです。しかし、marker=colormap[kmeans.labels_]が何をするのか、なぜ必要なのかは不明です。

3D散布図は2D版とまったく同じです。

marker引数には、"s"または"o"のようなマーカー文字列があり、マーカーの形が決まります。
色はc引数を使用して設定できます。単一の色または配列/色のリストを提供することができます。以下の例では、単にクラスタインデックスをcに設定し、カラーマップを使用します。

import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D 
import pandas as pd 
import numpy as np 

v = np.random.rand(10,4) 
v[:,3] = np.random.randint(0,2,size=10) 
df = pd.DataFrame(v, columns=['Feature1', 'Feature2','Feature3',"Cluster"]) 
print (df) 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
x = np.array(df['Feature1']) 
y = np.array(df['Feature2']) 
z = np.array(df['Feature3']) 

ax.scatter(x,y,z, marker="s", c=df["Cluster"], s=40, cmap="RdBu") 

plt.show() 

enter image description here

関連する問題