scikit learn 中的预处理 - 单个样本 - 折旧警告
Preprocessing in scikit learn - single sample - Depreciation warning
在 Ubuntu 下全新安装 Anaconda...我在使用 Scikit-Learn 进行分类任务之前以各种方式预处理我的数据。
from sklearn import preprocessing
scaler = preprocessing.MinMaxScaler().fit(train)
train = scaler.transform(train)
test = scaler.transform(test)
这一切都很好,但如果我有一个新样本(下面的温度)我想分类(因此我想以相同的方式预处理然后我得到
temp = [1,2,3,4,5,5,6,....................,7]
temp = scaler.transform(temp)
然后我收到弃用警告...
DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17
and will raise ValueError in 0.19. Reshape your data either using
X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1)
if it contains a single sample.
所以问题是我应该如何重新缩放像这样的单个样本?
我想另一种选择(不是很好)是...
temp = [temp, temp]
temp = scaler.transform(temp)
temp = temp[0]
但我相信还有更好的方法。
嗯,看起来警告实际上是在告诉你该怎么做。
作为 sklearn.pipeline
stages' uniform interfaces 的一部分,根据经验:
当你看到X
时,它应该是一个np.array
有两个维度
当你看到y
时,它应该是一个单一维度的np.array
。
因此,您应该考虑以下几点:
temp = [1,2,3,4,5,5,6,....................,7]
# This makes it into a 2d array
temp = np.array(temp).reshape((len(temp), 1))
temp = scaler.transform(temp)
只听警告告诉你什么:
Reshape your data either X.reshape(-1, 1) if your data has a single feature/column
and X.reshape(1, -1) if it contains a single sample.
对于您的示例类型(如果您有多个 feature/column):
temp = temp.reshape(1,-1)
一个 feature/column:
temp = temp.reshape(-1,1)
这可能有帮助
temp = ([[1,2,3,4,5,6,.....,7]])
我遇到了同样的问题并收到了同样的弃用警告。当我收到消息时,我正在使用 [23, 276] 的 numpy 数组。我试着按照警告重塑它,结果一无所获。然后我 select numpy 数组中的每一行(无论如何我都在迭代它)并将它分配给一个列表变量。然后它在没有任何警告的情况下工作。
array = []
array.append(temp[0])
然后你可以使用python列表对象(这里'array')作为sk-learn函数的输入。不是最有效的解决方案,但对我有用。
.values.reshape(-1,1)
将在没有 alerts/warnings
的情况下被接受
.reshape(-1,1)
将被接受,但弃用 war
你总是可以像这样重塑:
temp = [1,2,3,4,5,5,6,7]
temp = temp.reshape(len(temp), 1)
因为,主要问题是当您 temp.shape 是:
(8,)
而且你需要
(8,1)
-1 是数组的未知维度。在 numpy.reshape 文档中阅读有关“newshape”参数的更多信息 -
# X is a 1-d ndarray
# If we want a COLUMN vector (many/one/unknown samples, 1 feature)
X = X.reshape(-1, 1)
# you want a ROW vector (one sample, many features/one/unknown)
X = X.reshape(1, -1)
在 Ubuntu 下全新安装 Anaconda...我在使用 Scikit-Learn 进行分类任务之前以各种方式预处理我的数据。
from sklearn import preprocessing
scaler = preprocessing.MinMaxScaler().fit(train)
train = scaler.transform(train)
test = scaler.transform(test)
这一切都很好,但如果我有一个新样本(下面的温度)我想分类(因此我想以相同的方式预处理然后我得到
temp = [1,2,3,4,5,5,6,....................,7]
temp = scaler.transform(temp)
然后我收到弃用警告...
DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17
and will raise ValueError in 0.19. Reshape your data either using
X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1)
if it contains a single sample.
所以问题是我应该如何重新缩放像这样的单个样本?
我想另一种选择(不是很好)是...
temp = [temp, temp]
temp = scaler.transform(temp)
temp = temp[0]
但我相信还有更好的方法。
嗯,看起来警告实际上是在告诉你该怎么做。
作为 sklearn.pipeline
stages' uniform interfaces 的一部分,根据经验:
当你看到
X
时,它应该是一个np.array
有两个维度当你看到
y
时,它应该是一个单一维度的np.array
。
因此,您应该考虑以下几点:
temp = [1,2,3,4,5,5,6,....................,7]
# This makes it into a 2d array
temp = np.array(temp).reshape((len(temp), 1))
temp = scaler.transform(temp)
只听警告告诉你什么:
Reshape your data either X.reshape(-1, 1) if your data has a single feature/column and X.reshape(1, -1) if it contains a single sample.
对于您的示例类型(如果您有多个 feature/column):
temp = temp.reshape(1,-1)
一个 feature/column:
temp = temp.reshape(-1,1)
这可能有帮助
temp = ([[1,2,3,4,5,6,.....,7]])
我遇到了同样的问题并收到了同样的弃用警告。当我收到消息时,我正在使用 [23, 276] 的 numpy 数组。我试着按照警告重塑它,结果一无所获。然后我 select numpy 数组中的每一行(无论如何我都在迭代它)并将它分配给一个列表变量。然后它在没有任何警告的情况下工作。
array = []
array.append(temp[0])
然后你可以使用python列表对象(这里'array')作为sk-learn函数的输入。不是最有效的解决方案,但对我有用。
.values.reshape(-1,1)
将在没有 alerts/warnings
.reshape(-1,1)
将被接受,但弃用 war
你总是可以像这样重塑:
temp = [1,2,3,4,5,5,6,7]
temp = temp.reshape(len(temp), 1)
因为,主要问题是当您 temp.shape 是: (8,)
而且你需要 (8,1)
-1 是数组的未知维度。在 numpy.reshape 文档中阅读有关“newshape”参数的更多信息 -
# X is a 1-d ndarray
# If we want a COLUMN vector (many/one/unknown samples, 1 feature)
X = X.reshape(-1, 1)
# you want a ROW vector (one sample, many features/one/unknown)
X = X.reshape(1, -1)