2016-11-02 6 views
-1

私はPythonと機械学習の新機能で、大学の私のコースの一環としてnumpy、matplotlib、sci-kitを学びます。さて、私は質問があります。以下のコードは問題なく動作しますが、問題は実際に何が起こっているのか分かりません。このため、Pythonの散布方法の説明(機械学習用)

%matplotlib inline 
X=iris.data 
Y=iris.target 
#first two features are sepal length and sepal width 
plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired) 
plt.xlabel('Sepal length') 
plt.ylabel('Sepal width') 

私はドキュメントをチェックしようとしましたが、実際には私には意味がありませんでした。 ここでは、plt.scatter()の引数の意味を知りたいと思います。私は本当にそれを理解していない、c = Yの意味は何ですか、なぜcmapは2つのX座標があるのですか?この次のコードのよう

:私はここで知りたいのは何

%matplotlib inline 

#here's also how to plot in 3d: 
from mpl_toolkits.mplot3d import Axes3D # 

#create a new figure 
fig = plt.figure(figsize=(5,5)) 


#this creates a 1x1 grid (just one figure), and now we are plotting 
#subfigure 1 (this is what 111 means) 
ax = fig.add_subplot(111, projection='3d') 

#plot first three features in a 3d Plot. Using : means that we take all  
#elements in the correspond array dimension 
ax.scatter(X[:, 0], X[:, 1], X[:, 2],c=Y) 

は次のとおりです。

fig.add_subplot(111、投影= '3D')。この3番目の1は本当に私にとって意味をなさない。私は1x1グリッドを理解していますが、私は理解していません。そして今、私たちはサブ図1をプロットしています。また

ax.scatterは()の引数はここでも意味をなさない。上記のフォーマットと異なるフォーマットはなぜですか?なぜ3つのXがあり、cmapがないのですか?私はそれを本当に理解していない。なぜ彼らはplt.scatter()を使わないのですか?

+0

'X'は変数であり、引数の名前ではありません。少なくとも3つの列を持つ配列です。最初のものがプロットのx変数として使用されます。 2番目の列は、プロットのy変数として使用されます。 3列目は、マーカーのサイズを調整するために使用されます。マーカーの色は 'Y'変数に割り当てられたデータから設定されます。 –

答えて

0

あなたの質問に一歩一歩進みましょう。

まず、"なぜ2つのX座標がありますか?"scatter関数(http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.scatter)は、マーカーの座標がxyです。この場合、両方xy座標は単一の2Dアレイ内に格納されX呼ば:X[:,0]単にx座標であり、そしてX[:,1]y座標。 "c = Yはどういう意味ですか?":CMAPを用いた色にマッピングする

Cが単一カラーフォーマットストリング、または長さN、またはN番号の配列の色仕様の配列であることができる:マーカーを着色するためのいくつかのオプションがありますkwargs(下記参照)を介して指定されたノルム。カラーマップされる値の配列と区別がつかないので、cは単一の数値のRGBまたはRGBAシーケンスであってはならないことに注意してください。 cは、行がRGBまたはRGBAの2次元配列ですが、すべての点で同じ色を指定する単一の行の場合も含めて、RGBまたはRGBAです。

だから、この場合には、関連する部分は、「CMAPを使って色にマッピングするN番号」のようですあなたはデータ値を提供すなわち、およびscatter色、いくつかのカラーマップを使用してマーカー(http://matplotlib.org/examples/color/colormaps_reference.html) 。

"fig.add_subplot(111、projection = '3d')。この3番目の1は本当にわかりません。add_subplotは、グリッドにサブプロットを追加します。111(またはより明確な例として322を使用します)は、3行2列のグリッドを意味し、グリッド上の2番目の位置を使用しています1)を現在のサブプロットとして使用します。だからsubplot(111)は、単純に1行1列のサブプロットの図を意味し、あなたは最初の唯一の位置を(驚いたことに..)使っています。

"なぜ3つのXがあり、cmapはありませんか?":最初mpl_toolkits.mplot3dをインポートし、次のadd_subplotprojection='3d'を指定したので、あなたは今、マーカーのxyz座標を指定する必要があり、3D scatterプロットを、作成しています。

0
plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired) 

は、花(x、y)を示す色c=Y有する2次元プロットである - >(Xの[:0]、X [:1])座標点に属します。 Describes the scatter function in detail.cmap引数plt.cm.Pairedは、使用可能な色の範囲全体を使用していることを意味します。浮動小数点データを使用していない場合、この引数は不必要です。あなたがそれなしでプロットするとどうなりますか?

ax = fig.add_subplot(111, projection='3d') 

111ここで、1x1のプロットの配列の最初の要素を指します。これはここではあまり役に立ちませんが、複数のサブプロットでプロットを作成すると便利になります。

ax.scatter(X[:, 0], X[:, 1], X[:, 2],c=Y) 

ここでは(X、Y、Z)の属性の3次元プロットをプロットしている - >(Xの[:0]、X [:1]、X [:2])一方、Yは実際のクラスに基づいてポイントに色を割り当てます。