在用sklearn做机器学习的时候,我们经常要对数据进行预处理,而又经常使用标准化预处理数据,但是,使用StandardScaler有可能会出现ValueError 的错误。具体的错误如下面所示:
通过查看sklearn的帮助文档,发现:StandardScaler 能够接受 scipy.sparse 作为输入,只要参数 with_mean=False 被准确传入它的构造器。否则会出现 ValueError 的错误,因为默认的中心化会破坏稀疏性,并且经常会因为分配过多的内存而使执行崩溃。
然后,再查看fit_transform方法的帮助文档:
fit_transform(X, y=None, **fit_params)
参数:X : numpy array of shape [n_samples, n_features]
y : numpy array of shape [n_samples]
发现传入的numpy数组为一个二维的矩阵,如果是一维的数组,可以构造为二维的矩阵(自己的理解)。
接下来,就说怎么处理这种问题,其实也就是构造一个二维的矩阵,并只取第一列数据也就是样本y[n_samples]。
y_Standard = StandardScaler_y.fit_transform(y[:, None])[:,0]
这样就行了。