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
of
CLF
不应该将
self
作为第一个参数接收吗?我认为python expect是一个接收self的类方法,因此,
CLF
认为
DF\u input
它是self,而CLF没有一个名为
to\u numpy
的方法/属性(因为它是一个数据帧方法)OMG我不敢相信我错过了这个。。。非常感谢。