gpt4 book ai didi

python - 如何使用 MinMaxScaler sklearn 标准化训练和测试数据

转载 作者:行者123 更新时间:2023-11-30 08:27:12 25 4
gpt4 key购买 nike

所以,我有这个疑问,并一直在寻找答案。所以问题是当我使用时,

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]})

因为当我标准化列时,AB 的值将根据新数据而不是模型将要训练的数据进行更改。所以,现在我的数据在如下数据准备步骤之后将是。

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

AB 的值将根据 MaxMin 值而变化df[['A','B']]. df[['A','B']] 的数据准备是相对于 df[['A','B'' 的 Min Max ]]

对于不同的数字关联,数据准备如何有效?我不明白这里的预测如何正确。

最佳答案

您应该使用训练数据拟合MinMaxScaler,然后在预测之前将缩放器应用于测试数据。

<小时/>

总结:

  • 第 1 步:将scaler 安装到TRAINING 数据
  • 第 2 步:使用scaler转换 TRAINING 数据
  • 第 3 步:使用转换后的训练数据拟合预测模型
  • 第 4 步:使用scaler转换 TEST 数据
  • 第 5 步:使用训练模型(第 3 步)和转换后的测试数据(第 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

关于python - 如何使用 MinMaxScaler sklearn 标准化训练和测试数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50565937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com