我正在学习spark,我在其中一个教程中有下面的代码。我知道Dataframe是一个热编码在下面的代码,但我不明白的是为什么要使用stringindexer?stringindexer是否应与onehotencoderestimator结合使用?val si=new stringindexer().sethandleinvalid(“keep”).setinputcol(procttypecol).setoutputcol(procttypesioutcol)
val ohe = new OneHotEncoderEstimator()
.setHandleInvalid("keep")
.setInputCols(Array(si.getOutputCol))
.setOutputCols(Array(ProductTypeOHEOutCol))
val pipeline = new Pipeline()
.setStages(Array(si, ohe))
谢谢
1条答案
按热度按时间h7wcgrx31#
si将字符串值转换为整数并在ohe编码中生成整数,如果您的列是整数,如1、2、3,则可以直接应用ohe。但是如果你的标签是像a,b,c这样的字符串,你必须先用si,然后用chain-ohe