Python 为什么` to_numpy()`被识别为一个属性而不是数据帧的一个方法? 将熊猫作为pd导入 将numpy作为np导入 类别CLF: 权重=0 def配合(DF_输入,DF_输出,eta=0.1,下降=1000): 十、 y=DF_输入。至_numpy(复制=True),DF_输出。至_numpy(复制=True) N、 d=X.形状 m=长度(np.唯一(y)) 自权重=np随机正态(0,1,大小=(d,m)) 输入=pd.read\u csv(路径输入) 输出=pd.read\u csv(路径\u输出) clf=clf() clf.fit(输入、输出)
我为我编写的类定义了一个方法Python 为什么` to_numpy()`被识别为一个属性而不是数据帧的一个方法? 将熊猫作为pd导入 将numpy作为np导入 类别CLF: 权重=0 def配合(DF_输入,DF_输出,eta=0.1,下降=1000): 十、 y=DF_输入。至_numpy(复制=True),DF_输出。至_numpy(复制=True) N、 d=X.形状 m=长度(np.唯一(y)) 自权重=np随机正态(0,1,大小=(d,m)) 输入=pd.read\u csv(路径输入) 输出=pd.read\u csv(路径\u输出) clf=clf() clf.fit(输入、输出),python,pandas,methods,attributes,numpy-ndarray,Python,Pandas,Methods,Attributes,Numpy Ndarray,我为我编写的类定义了一个方法.fit()。第一步是将两个数据帧转换为numpy数组。然而,当我尝试使用该方法时,我得到了以下错误,尽管INPUT.to\u numpy(copy=True)和OUTPUT.to\u numpy(copy=True)各自都可以正常工作。有人能帮我吗?为什么to_numpy被认为是一个属性,而不是数据帧的方法 --------------------------------------------------------------------------- Attr
.fit()
。第一步是将两个数据帧转换为numpy数组。然而,当我尝试使用该方法时,我得到了以下错误,尽管INPUT.to\u numpy(copy=True)
和OUTPUT.to\u numpy(copy=True)
各自都可以正常工作。有人能帮我吗?为什么to_numpy
被认为是一个属性,而不是数据帧的方法
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-22-a3d455104534> in <module>
1 clf = CLF()
----> 2 clf.fit(INPUT, OUTPUT)
<ipython-input-16-57babd738b2d> in fit(DF_input, DF_output, eta, drop)
4
5 def fit(DF_input, DF_output, eta=0.1,drop=1000):
----> 6 X, y = DF_input.to_numpy(copy=True), DF_output.to_numpy(copy=True)
7 N,d = X.shape
8 m = len(np.unique(y)) # number of classes
AttributeError: 'CLF' object has no attribute 'to_numpy'
---------------------------------------------------------------------------
AttributeError回溯(最近一次呼叫上次)
在里面
1 clf=clf()
---->2 clf.配合(输入、输出)
拟合(测向仪输入、测向仪输出、eta、下降)
4.
5 def配合(DF_输入,DF_输出,eta=0.1,下降=1000):
---->6 X,y=DF\u输入到numpy(copy=True),DF\u输出到numpy(copy=True)
7 N,d=X形状
8 m=len(np.唯一(y))#类数
AttributeError:“CLF”对象没有“to\u numpy”属性
您的问题是,对象方法的第一个输入通常保留给self
。正确的语法应为:
class CLF:
Weights = 0
# notice the `self`
def fit(self, DF_input, DF_output, eta=0.1, drop=1000):
X, y = DF_input.to_numpy(copy=True), DF_output.to_numpy(copy=True)
N,d = X.shape
m = len(np.unique(y))
self.Weights = np.random.normal(0,1, size=(d,m))
INPUT = pd.read_csv(path_input)
OUTPUT = pd.read_csv(path_output)
clf = CLF()
clf.fit(INPUT, OUTPUT)
实例方法是一种属性类型;这是一条更一般的错误消息,键入
(点)运算符,而不是通过解析左括号来区分您的用法
问题是您定义了一个实例方法
fit
,但将实例命名为dfu input
。我想您只是忘记了隐式实例参数通常的self
命名。您的类方法fit
ofCLF
不应该将self
作为第一个参数接收吗?我认为python expect是一个接收self的类方法,因此,CLF
认为DF\u input
它是self,而CLF没有一个名为to\u numpy
的方法/属性(因为它是一个数据帧方法)OMG我不敢相信我错过了这个。。。非常感谢。