ValueError:无法将字符串转换为浮点数-机器学习

时间:2019-06-26 04:44:12

标签: python machine-learning scikit-learn

我正在研究一个机器学习项目,以确定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)

我应该使用哪个分类器以及如何解决此问题?

1 个答案:

答案 0 :(得分:0)

您需要将分类特征编码为数值,Label EncodingOne Hot Encoding等技术是sklearn.preprocessing模块的组成部分,可以用来进行编码。因此,首先确定火车集中的分类列,并按照上面的链接所述进行伪编码,然后应用.fit()方法。

有关更多实施细节,请参见Label encoder vs one hot encoder

希望这会有所帮助!