sklearn.preprocessing.StandardScaler ValueError:预期为 2D 数组,却得到了 1D 数组

Jim*_*616 6 python scikit-learn

我正在尝试完成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)
Run Code Online (Sandbox Code Playgroud)

最后一行抛出错误:

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.
Run Code Online (Sandbox Code Playgroud)

是的,我已经按照此处此处此处此处t所示重新调整了我的目标数组,但无济于事。我的重塑正确吗?t.reshape(-1,1)

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

Stu*_*olf 5

我猜你有一个数据框,所以你需要重新分配变量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)
Run Code Online (Sandbox Code Playgroud)

要检查它是否有效:

np.mean(t2)
2.4646951146678477e-16
Run Code Online (Sandbox Code Playgroud)