2013-11-02 6 views
1

Я пишу код для поиска K Nereast Neighbor и вам нужно использовать пакет numPy Python для вычислений. Я прилагаю код функции ниже:Пакет импорта Python в функции

#Import packages 
import numpy as np 

def knn(Q,R,k,classvar): 
#Function that does k-NN and selects the k Nearest Neighbours 
#Input parameters 
#Q array of Query points, R array of reference points 
#k is the no of closest points in k-NN 
#classvar is binary class variable either 1 or 0 


#for loop over all Query points 
#calculate distance from ith Query point to all reference points 
     dist = np.apply_along_axis(np.linalg.norm, 1, R-Q) 
#sort distances and find indexes 
     index=np.argsort(dist) 
#pick the kth closest indexes 
     knearest=index[1:k] 
#find the count of 1's and 0's in the binary class variable 
#if count of 1 is more than count of 0 predict class 1 else class 0 
     if sum(e==0) > sum(e==1): 
      preclassQ=0; 
     else: 
      preclassQ=1; 
     return preclassQ 

Прежде всего я хочу знать, нужно ли включать в заявлении

from numpy import * 

в определении функции, то мы будем давать его в IPython командная строка ?

Я сохранил этот код как knn.py, а затем импортировать его в командной строке и называется функцию следующим образом:

In [58]: import knn 

In [59]: knn.knn(b,a,1,[(0),(0),(1),(1)]) 

Но функция не выполняется, и я получаю ошибку следующим образом:

--------------------------------------------------------------------------- 
NameError         Traceback (most recent call last) 

/Project/<ipython console> in <module>() 

/Project/knn.py in knn(Q, R, k, classvar) 
    14   dist = np.apply_along_axis(np.linalg.norm, 1, R-Q) 
    15 #sort distances and find indexes 

---> 16   index=np.argsort(dist) 
    17 #pick the kth closest indexes 

    18   knearest=index[1:k] 

NameError: global name 'numpy' is not defined 

ответ

1

Поскольку вы звоните np.some_function, вам не нужно использовать from numpy import *.

Локальные определения функции должны быть в конфликте с глобальными определениями, так попытайтесь переместить import numpy внутри функции:

def knn(Q, R, k, classvar): 
    import numpy as np 

Если он не работает, где вы должны использовать numpy.some_function вместо np.some_function. ..

0

Перед импортом пакета 'NumPy'

import numpy as np 

вы можете определить, как нп г ЛОБАЛЬНЫЕ

global np 

код будет идти, как этот

global np 
import numpy as np 

def foo(): 
    np.seterr(divide = 'ignore') 

это работает для меня, может работать для вас, как хорошо !!!

Смежные вопросы