首页 > 解决方案 > sklearn.preprocessing.StandardScaler ValueError: Expected 2D array, got 1D array instead

问题描述

我正在尝试通过http://www.semspirit.com/artificial-intelligence/machine-learning/regression/support-vector-regression/support-vector-regression-in-python/上的教程工作, 但没有 csv包含文件,所以我使用自己的数据。这是到目前为止的代码:

import numpy as np
import pandas as pd
from matplotlib import cm
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from scipy import stats

# Here's where I import my data; there's no csv file included in the tutorial
import quasar_functions as qf
dataset, datasetname, mags = qf.loaddata('sdss12')

S = np.asarray(dataset[mags])
t = np.asarray(dataset['z'])
t.reshape(-1,1)

# Feature scaling
from sklearn.preprocessing import StandardScaler as scale
sc_S = scale()
sc_t = scale()
S2 = sc_S.fit_transform(S)
t2 = sc_t.fit_transform(t)

最后一行抛出错误:

ValueError: Expected 2D array, got 1D array instead:
array=[4.17974 2.06468 5.46959 ... 0.41398 0.3672  1.9235 ].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

是的,我已经t这里这里这里这里t.reshape(-1,1)所示的方式重塑了我的目标数组,但无济于事。我正确地重塑了吗?

这是我的所有变量: 在此处输入图像描述

标签: pythonscikit-learn

解决方案


我猜你有一个数据框,所以你需要重新分配变量t = t.reshape(-1,1)

import pandas as pd

dataset = pd.DataFrame(np.random.normal(2,1,(100,4)),columns=['z','x1','x2','x3'])
mags = ['x1','x2','x3']

S = np.asarray(dataset[mags])
t = np.asarray(dataset['z'])
t = t.reshape(-1,1)

from sklearn.preprocessing import StandardScaler as scale
sc_S = scale()
sc_t = scale()
S2 = sc_S.fit_transform(S)
t2 = sc_t.fit_transform(t)

要检查它是否有效:

np.mean(t2)
2.4646951146678477e-16

推荐阅读