Pytorch--报错1.TypeError: fit_transform() missing 1 required positional argument: ‘X‘

报错问题:TypeError: fit_transform() missing 1 required positional argument: ‘X’

在这里插入图片描述
请添加图片描述
运行的代码如下:

from sklearn.preprocessing import MinMaxScaler
from sklearn import preprocessing
result2  = preprocessing.MinMaxScaler.fit_transform(o3.reshape(-1,1))
#print ((result2))

运行之后会爆上面的错误,解决办法有两种。

方法一,直接实例化一个MinMaxScaler类来调用函数

from sklearn.preprocessing import MinMaxScaler
from sklearn import preprocessing
result2  = preprocessing.MinMaxScaler().fit_transform(o3.reshape(-1,1))
#print ((result2))

方法二,实例化一个MinMaxScaler作为函数的输入来调用函数

scaler = preprocessing.MinMaxScaler()
result2  = preprocessing.MinMaxScaler.fit_transform(scaler,o3.reshape(-1,1))

可以成功运行(运行截图如下):
请添加图片描述

下面为报错问题分析,如果想知道为何会爆这种错误可以继续往下看:

报错分析:

vscode的自动补全功能,在补全MinMaxScaler的时候不会默认的补充(),而我们要使用的是MinMaxScale对象里面的归一化功能。
为什么preprocessing.MinMaxScaler.fit_transform(o3.reshape(-1,1))在进行代码书写的时候不会出现报错,因为真的存在这个函数。我们使用help函数来观看这个代码里面的解释是什么
请添加图片描述
同时为了和正确的代码进行对比,我们再次使用help函数来看一下preprocessing.MinMaxScaler().fit_transform里面是什么
在这里插入图片描述
我们可以看到,二者在描述作用方面是一致的,在参数方面只相隔了一个self参数。这也就是为何可以使用方法二来得到正确解答的原因。我们引用一段官方的回答来知道self参数是干嘛的。在 Python 中,self 参数用于引用类的实例对象自身。它是一个约定俗成的命名,但实际上可以使用任何变量名。通常,在类的方法定义中,第一个参数被命名为 self,以表示该方法属于类的实例,并且可以访问和操作实例的属性和方法。 这表明了我们需要引用这个函数的时候,需要提供一个实例给他,用于self进行读取,所以我们生成一个MinMaxScaler类作为参数传入里面,用于self进行接收,而我们第一个方法的代码,因为已经生成了一个MinMaxScaler()类,所以他已经有了实例对象来对接self参数,所以不需要传入这个参数,只需要传入需要进行归一化的函数的参数就可以得到正确的答案了。

解bug不易,知道为什么有bug更不易,点个赞再走把!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值