首页 > 解决方案 > ValueError:无法将字符串转换为浮点数 - 机器学习

问题描述

我正在研究一个机器学习项目,以确定 PCAP 是否是攻击,我必须处理 PCAP 文件并创建模型然后进行预测。我的代码的一部分是这样的:

train['is_train'] = np.random.uniform(0, 1, len(train)) <= .75
Train, Validate = train[train['is_train']==True], train[train['is_train']==False]
features = list(set(list(dataset.columns))-set(ID_col)-set(target_col)-set(other_col))

x_train = Train[list(features)].values
y_train = Train["class"].values
x_validate = Validate[list(features)].values
y_validate = Validate["class"].values
x_test = test[list(features)].values


random.seed(100)
rf = RandomForestClassifier(n_estimators=1000)
rf.fit(x_train, y_train)

这就是我的 x_train 列表包含的内容:

[['172.27.224.250' 16 'TCP' ... 1532299481617 60 54200]
 ['172.27.224.251' 24 'TCP' ... 1532299483068 60 502]
 ['172.27.224.251' 24 'TCP' ... 1532299483069 60 502]
 ...
 ['172.27.224.251' 24 'TCP' ... 1532301279315 60 502]
 ['172.27.224.250' 16 'TCP' ... 1532301279324 60 49713]
 ['172.27.224.250' 24 'TCP' ... 1532301279335 66 49713]]

我有ValueError: could not convert string to float: '172.27.224.250'错误rf.fit(x_train, y_train)

我应该使用哪个分类器,我该如何解决这个问题?

标签: pythonmachine-learningscikit-learn

解决方案


您需要将分类特征编码为数值,标签编码One Hot Encoding等技术很少,它们是模块的一部分,sklearn.preprocessing可让您进行编码。因此,首先确定您的训练集中的分类列,并按照上述链接中的说明进行虚拟编码,然后应用.fit()方法。

有关更多实施细节,请参阅标签编码器与一个热编码器

希望这可以帮助!


推荐阅读