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))

可以成功运行(运行截图如下):
Pytorch--报错1.TypeError: fit_transform() missing 1 required positional argument: ‘X‘_第1张图片

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

报错分析:

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

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

你可能感兴趣的:(Pytorch学习笔记,人工智能,python,归一化,机器学习)