sklearn调用StandardScaler的fit_transform报错缺少位置参数X如何解决
报错原因
- 代码中
sc = StandardScaler未对StandardScaler类进行实例化,直接将类本身赋值给了变量sc fit_transform是StandardScaler的实例方法,正常调用实例的该方法时,会默认将实例自身作为第一个位置参数self传入,仅需要传入X参数即可。如果直接通过类本身调用该方法,需要手动传入self和X两个参数,你传入的X_train会被识别为self,方法要求的X参数就会提示缺失,触发该TypeError。
解决方法
在实例化StandardScaler时添加空括号,创建类的实例对象再调用方法即可,修改后的完整代码如下:
X=data.iloc[:,:-1].values from sklearn.model_selection import train_test_split # 请确保y变量已经提前定义,否则会触发y未定义的报错 X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3) from sklearn.preprocessing import StandardScaler # 修正:添加括号实例化StandardScaler类 sc = StandardScaler() X_train = sc.fit_transform(X_train) # 补充:测试集不要重新fit,直接用训练集拟合好的scaler做标准化,避免数据泄露 X_test = sc.transform(X_test)
内容的提问来源于stack exchange,提问作者Govind lodhi
相关产品推荐
相关产品推荐

