Pyspark pipelineModel.transform error 'Поле "cut_catVec" не существует. \ NДоступные поля - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь запустить MLlip в Pyspark для прогнозирования цены, и я использую фрейм данных с такой схемой:

[('cut', 'string'),
 ('color', 'string'),
 ('clarity', 'string'),
 ('carat', 'double'),
 ('table', 'int'),
 ('x', 'double'),
 ('y', 'double'),
 ('z', 'double'),
 ('price', 'int')]

, поэтому после определения категориальных и числовых столбцов:

`categ_col= ['cut', 'color' ,'clarity']
num_col= ['carat','table', 'x', 'y', 'z']``

В приведенном ниже сценарии I:

  • Сначала используйте StringIndexer для преобразования строковых / текстовых значений в числовые значения, а затем OneHotEncoderEstimator
  • Spark MLLibto, чтобы преобразовать каждое Stringindexed или преобразованные значения в One Hot Encoded значения.
  • VectorAssembler используется для объединения всех объектов в один вектор из нескольких столбцов, содержащих тип double
  • Также добавление каждого шага процесса в массив этапов

    `from pyspark.ml.feature import StringIndexer, OneHotEncoderEstimator, 
    VectorAssembler
    stages = []
    for catcol in categ_col:
       stringIndexer = StringIndexer(inputCol = catcol, outputCol =                         catcol + 'Index')
     OHencoder = OneHotEncoderEstimator(inputCols=[stringIndexer.getOutputCol()], outputCols=[catcol + "_catVec"])
    stages += [stringIndexer, OHencoder]
    assemblerInputs = [c + "_catVec" for c in categ_col] + num_col
    Vectassembler = VectorAssembler(inputCols=assemblerInputs,                                 outputCol="features")
    stages += [Vectassembler]`
    

``

, когда я перешел к следующему шагу:

    `from pyspark.ml import Pipeline
    cols = mllipdf.columns
    pipeline = Pipeline(stages = stages)
    pipelineModel = pipeline.fit(mllipdf)
    mllipdf = pipelineModel.transform(mllipdf)
    selectedCols = ['features']+cols
    mllipdf = mllipdf.select(selectedCols)
    pd.DataFrame(mllipdf.take(5), columns=mllipdf.columns)`

Я получил ошибку в коде mllipdf = pipelineModel.transform(mllipdf)" line saying "IllegalArgumentException: 'Field "cut_catVec" does not exist.\nAvailable fields: cut, color, clarity, carat, table, x, y, z, price, clarityIndex, clarity_catVec'

не уверен, что здесь происходит

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...