在机器学习中编码数字标称值

时间:2019-12-26 07:12:12

标签: machine-learning data-processing

我正在研究基于网络数据的机器学习问题,其中数据集中的一列是Destination Port,其值类似于30, 80, 1024, etc.

由于此列中的数值不是序数,因此如何以某种方式转换此列,以便可以将其用作机器学习模型的输入?该列具有约480个唯一端口。

2 个答案:

答案 0 :(得分:1)

这称为归一化,归一化的目标是将数据集中的数字列的值更改为使用公共刻度,而不会扭曲值范围内的差异或丢失信息。

 # Create x, where x the 'scores' column's values as floats
 x = df[['name_of_ur_column']].values.astype(float)

 # Create a minimum and maximum processor object
 min_max_scaler = preprocessing.MinMaxScaler()

 # Create an object to transform the data to fit minmax processor
 x_scaled = min_max_scaler.fit_transform(x)

或者您可以使用原始格式

 # Run the normalizer on the dataframe

 df_normalized = pd.DataFrame(x_scaled)
 normalized_df=(df-df.mean())/df.std()

使用最小-最大归一化:

 normalized_df=(df-df.min())/(df.max()-df.min())

答案 1 :(得分:1)

由于Destination Port是名义功能,因此可以使用label encodingone hot encoding对其进行编码。

标签编码

优点:尺寸没有增加
缺点:会对模型产生顺序影响

一种热编码

优点:对模型无顺序影响
缺点:尺寸增加