Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何查找MinMaxScaler对象中的行数和列数?_Python_Scale_Minmax - Fatal编程技术网

Python 如何查找MinMaxScaler对象中的行数和列数?

Python 如何查找MinMaxScaler对象中的行数和列数?,python,scale,minmax,Python,Scale,Minmax,我制作了一个csv文件的数据帧,并将其传递到train_test_split,然后使用MinMaxScaler缩放整个X和Y数据帧,但现在我想知道行和列的基本数量,但不能 df=pd.read_csv("cancer_classification.csv") from sklearn.model_selection import train_test_split X = df.drop("benign_0__mal_1",axis=1).values y

我制作了一个csv文件的数据帧,并将其传递到train_test_split,然后使用MinMaxScaler缩放整个X和Y数据帧,但现在我想知道行和列的基本数量,但不能

df=pd.read_csv("cancer_classification.csv")
from sklearn.model_selection import train_test_split
X = df.drop("benign_0__mal_1",axis=1).values
y = df["benign_0__mal_1"].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train = scaler.fit(X_train)
X_test = scaler.fit(X_test)
X_train.shape
这将抛出以下错误

AttributeError回溯(最近一次呼叫上次) 在() ---->1 X_列车形状

AttributeError:'MinMaxScaler'对象没有属性'shape'

我阅读了文档,能够使用scale_uu找到行数,但没有找到列。 答案应该是这样的,但我找不到一个有帮助的属性

MinMaxScaler是一个对象,它可以
使自身适合于某些数据,也可以
转换这些数据。有

  • fit
    方法将定标器的参数与该数据相匹配。然后返回MinMaxScaler对象
  • 变换
    方法根据缩放器的拟合参数变换数据。然后返回转换后的数据
  • fit\u transform
    方法首先将定标器适配到该数据,然后对其进行转换并返回数据的转换版本
在您的示例中,您将MinMaxScaler对象本身视为数据!(见第一点)

同一个MinMaxScaler不应该在不同的数据集上安装两次,因为它的内部值将发生更改。永远不要在测试数据集上安装minmaxscaler,因为这是将测试数据泄漏到模型中的一种方式。您应该做的是对训练数据进行
fit_transform()
,对测试数据进行
transform()

这里的答案也可能有助于这一解释:

当您调用StandardScaler.fit(X_列)时,它所做的是计算X_列中的值的均值和方差。然后调用.transform()将通过减去平均值并除以方差来转换所有特征。为了方便起见,可以使用fit_transform()一步完成这两个函数调用

您希望仅使用训练数据来拟合定标器的原因是,您不希望使用来自测试数据的信息来偏移模型

如果将()拟合到测试数据,则会计算每个特征的新均值和方差。理论上,如果您的测试和列车组具有相同的分布,则这些值可能非常相似,但实际上通常不是这样

相反,您只希望通过使用在训练数据上计算的参数来转换测试数据


使用
fit\u transform
而不是
fit
,它会起作用的。@sandertjuh谢谢你,它起作用了谢谢你这么宽泛的解释。我以后每次使用它们时都会记住所有这些要点。我很高兴。如果这个答案对你有用,请考虑按它旁边的复选标记。