3

I am trying to plot a wonderful PCA using mlpy, and the c argument to plt.scatter is causing an exception.

dataset: http://mlpy.sourceforge.net/docs/3.5/_downloads/iris.csv

import mlpy
from matplotlib.mlab import PCA
import matplotlib.pyplot as plt
def classification():
 # x: (observations x attributes) matrix
 x = np.array(iris)[:, :4]
 # y: classes (1: setosa, 2: versicolor, 3: virginica)
 outputs_file="/Users/vasques/Desktop/classification.csv"
 y = np.loadtxt(outputs_file, delimiter=',')[:, 4].astype(np.int)
 pca = mlpy.PCA() # new PCA instance
 pca.learn(x) # learn from data
 z = pca.transform(x, k=2) # embed x into the k=2 dimensional subspace
 plt.set_cmap(plt.cm.Paired)
 fig1 = plt.figure(1)
 title = plt.title("PCA")
 plot = plt.scatter(z[:, 0], z[:, 1], c=y)
 labx = plt.xlabel("First component")
 laby = plt.ylabel("Second component")
 plt.show()

and I have the following error:

Traceback (most recent call last):
 File "/Library/Python/2.7/site-packages/matplotlib/artist.py", line 59, in draw_wrapper
 draw(artist, renderer, *args, **kwargs)
 File "/Library/Python/2.7/site-packages/matplotlib/figure.py", line 1050, in draw
 func(*args)
 File "/Library/Python/2.7/site-packages/matplotlib/artist.py", line 59, in draw_wrapper
 draw(artist, renderer, *args, **kwargs)
 File "/Library/Python/2.7/site-packages/matplotlib/axes/_base.py", line 2075, in draw
 a.draw(renderer)
 File "/Library/Python/2.7/site-packages/matplotlib/collections.py", line 729, in draw
 Collection.draw(self, renderer)
 File "/Library/Python/2.7/site-packages/matplotlib/artist.py", line 59, in draw_wrapper
 draw(artist, renderer, *args, **kwargs)
 File "/Library/Python/2.7/site-packages/matplotlib/collections.py", line 301, in draw
 self._offset_position)
 File "/Library/Python/2.7/site-packages/matplotlib/backends/backend_macosx.py", line 79, in draw_path_collection
 all_transforms = [t.get_matrix() for t in all_transforms]
AttributeError: 'numpy.ndarray' object has no attribute 'get_matrix'

When I delete c=y in plt.scatter it runs but I have a single color that does not allow me to recognize the groups.

perimosocordiae
17.9k14 gold badges63 silver badges76 bronze badges
asked Dec 11, 2013 at 16:42
3
  • and this is exactly the same code as here: mlpy.sourceforge.net/docs/3.5/… Commented Dec 11, 2013 at 16:43
  • Might want to clean up the source code a bit first. For example you define data=np.zeros(shape=(4,4)) and then immediately redefine it to data=np.array(iris); makes it hard to determine what the intent is. Commented Dec 11, 2013 at 17:10
  • @user3091978 Can you make a simpler example that is copy-pastable? Commented Jan 20, 2014 at 3:26

0

Know someone who can answer? Share a link to this question via email, Twitter, or Facebook.

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.