- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我将来自 preprocessing
模块的 scikit-learn Min-Max 缩放器与使用 NumPy 的“手动”方法进行了比较。但是,我注意到结果略有不同。有人对此有解释吗?
使用以下等式进行最小-最大缩放:
应该与 scikit-learn 相同:(X - X.min(axis=0))/(X.max(axis=0) - X.min(axis=0))
我正在使用以下两种方法:
def numpy_minmax(X):
xmin = X.min()
return (X - xmin) / (X.max() - xmin)
def sci_minmax(X):
minmax_scale = preprocessing.MinMaxScaler(feature_range=(0, 1), copy=True)
return minmax_scale.fit_transform(X)
在随机样本上:
import numpy as np
np.random.seed(123)
# A random 2D-array ranging from 0-100
X = np.random.rand(100,2)
X.dtype = np.float64
X *= 100
结果略有不同:
from matplotlib import pyplot as plt
sci_mm = sci_minmax(X)
numpy_mm = numpy_minmax(X)
plt.scatter(numpy_mm[:,0], numpy_mm[:,1],
color='g',
label='NumPy bottom-up',
alpha=0.5,
marker='o'
)
plt.scatter(sci_mm[:,0], sci_mm[:,1],
color='b',
label='scikit-learn',
alpha=0.5,
marker='x'
)
plt.legend()
plt.grid()
plt.show()
最佳答案
scikit-learn
单独处理每个功能。因此,您需要在取min
时指定axis=0
,否则numpy.min
将是all 数组的元素,不是每列单独:
>>> xs
array([[1, 2],
[3, 4]])
>>> xs.min()
1
>>> xs.min(axis=0)
array([1, 2])
numpy.max
也是一样;所以正确的函数是:
def numpy_minmax(X):
xmin = X.min(axis=0)
return (X - xmin) / (X.max(axis=0) - xmin)
这样做你会得到一个完全匹配:
关于python - scikit-learn MinMaxScaler 产生的结果与 NumPy 实现略有不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24724717/
我正在使用从 Lynda.com 获取的 sklearn MinMaxScaler 代码来缩放预测代码的数据集。特征范围应该是 (0,1),但我注意到我的试验数据中有些列大于 1。我相信这导致我的预测
我正在尝试规范化 df 并保存列和行索引/标题。 Sym1 Sym2 Sym3 Sym4 1 1 1 1 2 8 1 3 3 2 9
现在,我的数据在一个 2 x 2 numpy 数组中。如果我要在数组上使用 MinMaxScaler fit_transform,它将逐列对其进行归一化,而我希望将整个 np 数组一起归一化。有办法吗
现在我一直在解决扩展新数据的问题。在我的方案中,我已经训练并测试了模型,所有 x_train 和 x_test 都使用 sklearn.MinMaxScaler() 进行了缩放。然后,应用于实时过程,
我有一个包含 5 个特征的数据集。其中两个特征非常相似,但不具有相同的最小值和最大值。 ... | feature 2 | feature 3 | ... ----------------------
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 去年关闭。 Improve this questio
我想使用MinMaxScaler缩放Pandas dataFrame中的某些(但不是全部)列。我该怎么做? 最佳答案 由于sklearn> = 0.20,您可以使用Column Transformer
假设我有以下数据框 +---+-----+-------+ |day| time| result| +---+-----+-------+ | 1| 6 | 0
在 sklearn 的 MinMaxScaler 的早期版本中,人们可以指定缩放器对数据进行标准化的最小值和最大值。换句话说,以下情况是可能的: from sklearn import preproc
我想将每个 channel (R、G、B)的图像像素值标准化到范围 [0, 1]。 最小示例 #!/usr/bin/env python import numpy as np import scipy
我目前正在预处理我的数据,我知道我必须使用与我的训练集和测试集相同的缩放参数。然而,当我应用 sklearn 库中的 transform 方法时,我注意到一些奇怪的事情。 我首先在训练集上使用了 pr
我有三个数据框,每个数据框都使用 MinMaxScaler() 单独缩放。 def scale_dataframe(values_to_be_scaled) values = values_t
我像这样使用 sklearn MinMaxScaler()。 from sklearn.preprocessing import MinMaxScaler sc = MinMaxScaler() tr
我想将 PySpark 的 MinMaxScalar 应用于 PySpark 数据框 df 的多列。到目前为止,我只知道如何将其应用于单个列,例如x。 from pyspark.ml.feature
我有 1320 个训练样本(海面温度),每个样本都是一个二维数组(160,320),因此最终数组的形状为(1320,160,320)。我想使用 MinMaxScaler() 将它们标准化为 0 到 1
所以,我有这个疑问,并一直在寻找答案。所以问题是当我使用时, from sklearn import preprocessing min_max_scaler = preprocessing.MinM
我根据它的列缩放了一个矩阵,如下所示: scaler = MinMaxScaler(feature_range=(-1, 1)) data = np.array([[-1, 2], [-0.5, 6]
我正在尝试使用 sklearn.preprocessing.MinMaxScaler 来缩放使用 Keras 构建的 RNN 的 y 值 from sklearn.preprocessing impo
我正在尝试使用 sklearn 中的 preprocessing 将一些数字缩放到 0 - 1 的范围内。这就是我所做的: data = [44.645, 44.055, 44.54, 44.04,
我想在多个 pandas DataFrame 上“一起”应用 MinmaxScaler。这意味着我希望缩放器对这些列中的所有数据执行,而不是对每一列单独执行。 我的 DataFrame 有 20 列。
我是一名优秀的程序员,十分优秀!