【问题标题】:Question regarding OneHotEncoding - Python关于 OneHotEncoding - Python 的问题
【发布时间】:2019-02-27 16:00:03
【问题描述】:

我正在开展一个项目,将 One Hot Encoding 技术应用于 .binetflow 文件的分类列。

代码:

import pandas as pd
from sklearn.preprocessing import LabelEncoder,OneHotEncoder

mydataset = pd.read_csv('originalfiletest.binetflow')

le = LabelEncoder()
dfle = mydataset
dfle.State = le.fit_transform(dfle.State)
X = dfle[['State']].values
ohe = OneHotEncoder()
Onehot = ohe.fit_transform(X).toarray()

dfle['State'] = Onehot

mydataset.to_csv('newfiletest.binetflow', columns=['Dur','State','TotBytes','average_packet_size','average_bits_psecond'], index=False)

Original binetflow file

目前,我正在使用 Pandas,并且能够应用该技术。问题是当我需要写入第二个文件

当我尝试编写时,我期望的输出是,例如:变量 Onehot 中的 0001 或 0.0.0.1,但是当我尝试将它传递给列 dfle[' 时得到的是 0.0 或 1.0状态']。 图片可以在下面找到。

variable Onehot

column dfle['State']

此外,应该只写的列,当我在编译器上写 print 时,它显示正确,但是当它写入文件时,它会添加几个小数位。

Original and new binetflow file

【问题讨论】:

  • 文本信息应该作为测试题的一部分,而不是屏幕截图,因此它是可搜索和可复制的。

标签: python scikit-learn one-hot-encoding


【解决方案1】:

Onehot 是 numpy 数组,问题在于您将数组分配给数据框列

import pandas as pd
from sklearn.preprocessing import LabelEncoder, OneHotEncoder

mydataset = pd.DataFrame(data={'State': ['a', 'a', 'b', 'c', 'a', 'd']})

le = LabelEncoder()

mydataset.State = le.fit_transform(mydataset.State)
X = mydataset[['State']].values
ohe = OneHotEncoder()
Onehot = ohe.fit_transform(X).toarray()

dx = pd.DataFrame(data=Onehot)

mydataset['State'] = (dx[dx.columns[0:]].apply(lambda x: ','.join(x.dropna().astype(int).astype(str)), axis=1))

mydataset.to_csv('newfiletest.binetflow',
                 columns=['Dur', 'State', 'TotBytes', 'average_packet_size', 'average_bits_psecond'], index=False)

【讨论】:

  • 非常感谢!现在对第二个文件的写入工作正常。至于第一列写不正确,大家有什么想法吗(图片:原始和新的binetflow文件)?
  • 我不确定你的意思。尝试运行上面编辑的代码,让我知道问题所在,我会进一步帮助您。
  • 代码的目标只是在两列中执行 OHE,并将其余列按照原始文件中的方式写入。但是,如图所示,Dur 列在写入第二个文件并传递了比应有的更多内容时,以某种方式出现了“错误”。我不想限制字段,因为原始文件太大并且可能包含更长和更短字段的行,这可能会使以后的分析复杂化。 imgur.com/a/h5RlCWF
猜你喜欢
  • 2016-12-21
  • 1970-01-01
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多