Python Forum

Full Version: How to correct the NameError: name 'xx' is not defined?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
May I know how to correct the NameError: name 'xx' is not defined ?
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
# import some data to play with
iris = datasets.load_iris()
X = iris.data[:,[2,3]]
y = iris.target

def plotSVC(title):
# create a mesh to plot in
    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
    h = (x_max / x_min)/100
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
             np.arange(y_min, y_max, h))
    plt.subplot(1, 1, 1)
    Z = svc.predict(np.c_[xx.ravel(), yy.ravel()])
    Z = Z.reshape(xx.shape)

cs = [0.1, 1, 10, 100]
for c in cs:
    svc = svm.SVC(kernel='rbf', C=c).fit(X, y)
    plotSVC('C=' + str(c))
plt.contourf(xx, yy, Z, cmap=plt.cm.Paired, alpha=0.8)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired)
plt.xlabel('petal length')
plt.ylabel('petal width')
plt.xlim(xx.min(), xx.max())
plt.show()
Please see the attached files -
Please help me so that I can improve my computing skills
Please post complete unaltered error traceback message in BBCode error tags.
Thank You
Do us a favor and don't post a ton of images like that.

Your problem is that xx (and yy and Z) are defined in the function plotSVC. You can't access them outside the function unless you use a return statement and an assignment to get them out of the function:

def one23():
   return 1, 2, 3
one, two, three = one23()
print(two)
The error message -



Error:
runfile('C:/Users/HSIPL/Desktop/New f/a i/Homework 5 6 Solution draft.py', wdir='C:/Users/HSIPL/Desktop/New f/a i') C:/Users/HSIPL/Desktop/New f/a i/Homework 5 6 Solution draft.py:13: RuntimeWarning: divide by zero encountered in double_scalars h = (x_max / x_min)/100 C:\Users\HSIPL\Anaconda3\lib\site-packages\matplotlib\cbook\deprecation.py:107: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance. warnings.warn(message, mplDeprecation, stacklevel=1) Traceback (most recent call last): File "<ipython-input-2-9e53960ad79d>", line 1, in <module> runfile('C:/Users/HSIPL/Desktop/New f/a i/Homework 5 6 Solution draft.py', wdir='C:/Users/HSIPL/Desktop/New f/a i') File "C:\Users\HSIPL\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 668, in runfile execfile(filename, namespace) File "C:\Users\HSIPL\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 108, in execfile exec(compile(f.read(), filename, 'exec'), namespace) File "C:/Users/HSIPL/Desktop/New f/a i/Homework 5 6 Solution draft.py", line 24, in <module> plt.contourf(xx, yy, Z, cmap=plt.cm.Paired, alpha=0.8) NameError: name 'xx' is not defined
How to write the new coding for correct programming ?
The variable isn't defined. You can't use a variable that isn't defined. So to solve the error, you can either:

1) Define the variable, and set it with whatever value makes sense in the context, or
2) Not try to use it anymore.
In most cases, this error is triggered when Python sees a variable name (Global or Local) and doesn't know what it's for. These errors can happen if you forget to initialize a variable , if you misspell a variable, or if you misspell a reserved word such as "True". Before you use the global variable in your function for reading, it must be first initialized somewhere: either outside of the function or inside it.