关于 OneHotEncoding 的问题 - Python
Question regarding OneHotEncoding - Python
我正在开展一个项目,将 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 ['State']。
图片可以在下面找到。
variable Onehot
column dfle['State']
此外,应该写的列,当我在编译器上写打印时它显示正确但是当它写入文件时它添加了几个小数位。
Original and new binetflow file
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)
我正在开展一个项目,将 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 ['State']。 图片可以在下面找到。
variable Onehot
column dfle['State']
此外,应该写的列,当我在编译器上写打印时它显示正确但是当它写入文件时它添加了几个小数位。
Original and new binetflow file
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)