PythonOneHotEncoder使用许多虚拟变量还是更好的实践?

2024-10-01 00:33:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在构建一个神经网络,并且正在使用OneHotEncoder处理许多独立(分类)变量。我想知道我是用虚拟变量来处理这个问题,还是因为我所有的变量都需要虚拟变量,所以可能有更好的方法。在

df  
    UserName    Token                       ThreadID    ChildEXE       
0   TAG     TokenElevationTypeDefault (1)   20788       splunk-MonitorNoHandle.exe  
1   TAG     TokenElevationTypeDefault (1)   19088       splunk-optimize.exe 
2   TAG     TokenElevationTypeDefault (1)   2840        net.exe 
807 User    TokenElevationTypeFull (2)      18740       E2CheckFileSync.exe 
808 User    TokenElevationTypeFull (2)      18740       E2check.exe 
809 User    TokenElevationTypeFull (2)      18740       E2check.exe 
811 Local   TokenElevationTypeFull (2)      18740       sc.exe  

ParentEXE           ChildFilePath               ParentFilePath   
splunkd.exe         C:\Program Files\Splunk\bin C:\Program Files\Splunk\bin 0
splunkd.exe         C:\Program Files\Splunk\bin C:\Program Files\Splunk\bin 0
dagent.exe          C:\Windows\System32         C:\Program Files\Dagent 0
wscript.exe         \Device\Mup\sysvol          C:\Windows  1
E2CheckFileSync.exe C:\Util                     \Device\Mup\sysvol\ 1
cmd.exe             C:\Windows\SysWOW64         C:\Util\E2Check 1
cmd.exe             C:\Windows                  C:\Windows\SysWOW64 1

DependentVariable
0
0
0
1
1
1
1

我导入数据并在自变量上使用LabelEncoder

^{pr2}$

这给了我以下数组:

X
array([[2, 0, 20788, ..., 46, 31, 24],
       [2, 0, 19088, ..., 46, 31, 24],
       [2, 0, 2840, ..., 27, 42, 15],
       ...,
       [2, 0, 20148, ..., 17, 40, 32],
       [2, 0, 20148, ..., 47, 23, 0],
       [2, 0, 3176, ..., 48, 42, 32]], dtype=object)

对于所有的自变量,我必须创建虚拟变量:

我应该使用:

onehotencoder = OneHotEncoder(categorical_features = [0, 1, 2, 3, 4, 5, 6])
X = onehotencoder.fit_transform(X).toarray() 

这给了我:

X
array([[0., 0., 1., ..., 0., 0., 0.],
       [0., 0., 1., ..., 0., 0., 0.],
       [0., 0., 1., ..., 0., 0., 0.],
       ...,
       [0., 0., 1., ..., 1., 0., 0.],
       [0., 0., 1., ..., 0., 0., 0.],
       [0., 0., 1., ..., 1., 0., 0.]])

或者有更好的方法来解决这个问题吗?在


Tags: 方法binwindowstagfilesprogramexesplunk
2条回答

您也可以尝试: 十=警察局的傻瓜(X,列=[0,1,2,3,4,5,6],先删除_=True)

“drop_first=True”将您从虚拟变量陷阱中解救出来。在

这是我能找到的最有效的方法:

onehotencoder = OneHotEncoder(categorical_features = [0,1,2,3,4,5,6])
X = onehotencoder.fit_transform(X).toarray() 

相关问题 更多 >