我正在研究基于网络数据的机器学习问题,其中数据集中的一列是Destination Port
,其值类似于30, 80, 1024, etc.
。
由于此列中的数值不是序数,因此如何以某种方式转换此列,以便可以将其用作机器学习模型的输入?该列具有约480个唯一端口。
答案 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 encoding或one hot encoding对其进行编码。
标签编码
优点:尺寸没有增加
缺点:会对模型产生顺序影响
一种热编码
优点:对模型无顺序影响
缺点:尺寸增加