当前位置: 首页 > 面试题库 >

如何使用MinMaxScaler sklearn归一化训练和测试数据

鲜于浩淼
2023-03-14
问题内容

因此,我对此有疑问,一直在寻找答案。所以问题是我何时使用

from sklearn import preprocessing
min_max_scaler = preprocessing.MinMaxScaler()

df = pd.DataFrame({'A':[1,2,3,7,9,15,16,1,5,6,2,4,8,9],'B':[15,12,10,11,8,14,17,20,4,12,4,5,17,19],'C':['Y','Y','Y','Y','N','N','N','Y','N','Y','N','N','Y','Y']})

df[['A','B']] = min_max_scaler.fit_transform(df[['A','B']])
df['C'] = df['C'].apply(lambda x: 0 if x.strip()=='N' else 1)

这之后,我将训练和测试模型(AB作为特征,C如标签),并得到一些准确度得分。现在我的疑问是,当我必须预测新数据集的标签时会发生什么。说,

df = pd.DataFrame({'A':[25,67,24,76,23],'B':[2,54,22,75,19]})

因为当我规范化列时,A和的值B将根据新数据而不是将在其上训练模型的数据来更改。因此,现在将是下面的数据准备步骤之后的数据。

data[['A','B']] = min_max_scaler.fit_transform(data[['A','B']])

的价值AB将关于改变MaxMin价值df[['A','B']]。的数据准备df[['A','B']]是关于Min Maxdf[['A','B']]

有关不同数字的数据准备如何有效相关?我不明白这个预测在这里如何正确。


问题答案:

您应该拟合MinMaxScaler使用training数据,然后testing在进行预测之前将定标器应用于数据。

综上所述:

  • 步骤1:装scalerTRAINING data
  • 步骤2:使用scalertransform the TRAINING data
  • 第3步:使用transformed training datafit the predictive model
  • 步骤4:使用scalertransform the TEST data
  • 步骤5:predict使用trained model(步骤3)和transformed TEST data(步骤4)。

使用数据的示例:

from sklearn import preprocessing
min_max_scaler = preprocessing.MinMaxScaler()
#training data
df = pd.DataFrame({'A':[1,2,3,7,9,15,16,1,5,6,2,4,8,9],'B':[15,12,10,11,8,14,17,20,4,12,4,5,17,19],'C':['Y','Y','Y','Y','N','N','N','Y','N','Y','N','N','Y','Y']})
#fit and transform the training data and use them for the model training
df[['A','B']] = min_max_scaler.fit_transform(df[['A','B']])
df['C'] = df['C'].apply(lambda x: 0 if x.strip()=='N' else 1)

#fit the model
model.fit(df['A','B'])

#after the model training on the transformed training data define the testing data df_test
df_test = pd.DataFrame({'A':[25,67,24,76,23],'B':[2,54,22,75,19]})

#before the prediction of the test data, ONLY APPLY the scaler on them
df_test[['A','B']] = min_max_scaler.transform(df_test[['A','B']])

#test the model
y_predicted_from_model = model.predict(df_test['A','B'])

使用虹膜数据的示例:

import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from sklearn.svm import SVC

data = datasets.load_iris()
X = data.data
y = data.target

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

scaler = MinMaxScaler()
X_train_scaled = scaler.fit_transform(X_train)

model = SVC()
model.fit(X_train_scaled, y_train)

X_test_scaled = scaler.transform(X_test)
y_pred = model.predict(X_test_scaled)

希望这可以帮助。

另请参阅此处的帖子: https :
//towardsdatascience.com/everything-you-need-to-know-about-min-max-
normalization-in-
python-b79592732b79




 类似资料:
  • 为了评估我们的监督模型的泛化能力,我们可以将数据分成训练和测试集: from sklearn.datasets import load_iris iris = load_iris() X, y = iris.data, iris.target 考虑如何正常执行机器学习,训练/测试分割的想法是有道理的。真实世界系统根据他们拥有的数据进行训练,当其他数据进入时(来自客户,传感器或其他来源),经过训

  • 问题内容: 我有一个很大的数据集,想将其分为训练(50%)和测试集(50%)。 假设我有100个示例存储了输入文件,每一行包含一个示例。我需要选择50条线作为训练集和50条线测试集。 我的想法是首先生成一个长度为100(值范围从1到100)的随机列表,然后将前50个元素用作50个训练示例的行号。与测试集相同。 这可以在Matlab中轻松实现 但是如何在Python中完成此功能?我是Python的新

  • 我有一个相当大的dataframe形式的数据集,我想知道如何将dataframe拆分为两个随机样本(80%和20%)进行训练和测试。 谢谢!

  • 我刚刚开始使用R,我不确定如何将我的数据集与以下示例代码结合起来: 我有一个数据集,我需要将其放入训练(75%)和测试(25%)集中。我不确定应该将哪些信息放入x和大小?x是数据集文件吗?我有多少样本?

  • 最近,我读了很多关于keras批处理规范化的文章,讨论了很多。 根据该网站:设置“tf.layers.batch\u normalization”中的“training=False”,这样训练将获得更好的验证结果 答案是: 如果使用training=True启用批次标准化,则将开始标准化批次本身,并收集每个批次的平均值和方差的移动平均值。现在是棘手的部分。移动平均值是指数移动平均值,tf的默认动量

  • 问题内容: 我正在尝试运行以下Colab项目,但是当我想将训练数据分为验证和训练部分时,出现此错误: 我使用以下代码: 如何解决此错误? 问题答案: 根据Tensorflow Dataset docs ,百分比拆分是可能的,例如 如示例所示,更改列表时,您的代码将起作用: 使用上面的代码,有2590个条目,而有1080个。