chunky77 Ответов: 2

Я получаю эту ошибку в Python-


код--

import numpy as np

def __init__(self, k = 3, eps = 0.0001):
        self.k = k ## number of clusters
        self.eps = eps ## threshold to stop `epsilon`
        


X=np.genfromtxt('D:\\M Tech\\ctech\\my_courses\\ELL784\\Assignment-3\\train_data.csv',delimiter=' ') #loading test data
print(X)
n, d = X.shape
print("n=",n  ,"d=",d)
clus=3
mu = X[np.random.choice(n, self.k, False), :]
print(mu)



выход--

[[ 1.09222171  1.89465052]
 [ 1.25575788 -1.59750016]
 [ 1.2305203   3.6342979 ]
 [ 0.69251878 -0.12405407]]
n= 4 d= 2
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-20-7bd596b4f068> in <module>()
     12 print("n=",n  ,"d=",d)
     13 clus=3
---> 14 mu = X[np.random.choice(n, self.k, False), :]
     15 print(mu)

NameError: name 'self' is not defined


Что я уже пробовал:

не удалось найти ошибку,
Я думаю, что что-то нужно исправить в функции _init_, но что это такое ??
плз помогите.

Richard MacCutchan

Смотрите мое обновленное решение.

2 Ответов

Рейтинг:
2

Richard MacCutchan

То self объект существует только в пределах области действия __init__ метод. В оставшемся коде он не определен. Вам нужно создать другую переменную для хранения этого значения.

[редактировать]
Видеть 9. классы-документация Python 3.4.5[^].
[/редактировать]


Рейтинг:
2

Albert Holguin

В Python метод __init_ _ используется для инициализации экземпляра объекта (полуэквивалентный конструктору в C++). На "самоучитель.к", ты хочешь сказать, что переменная "K" существует в рамках какого-то объекта. Если бы вы пытались получить доступ к этой переменной извне объекта, вы бы использовали соглашение ObjectName. k.

Однако в случае кода, который вы опубликовали, у вас есть метод init без связанного класса, поэтому вы не уверены, что этот код вообще будет вызван. Я удивлен, что на самом деле это не автоматическая ошибка Python, потому что кажется, что она не должна быть допустимой (вероятно, просто игнорируется синтаксическим анализатором).