transform

Преобразуйте новые данные, используя сгенерированные функции

    Описание

    пример

    NewTbl = transform(Transformer,Tbl) возвращает таблицу с преобразованными функциями, сгенерированными FeatureTransformer Transformer объекта. Область входа Tbl должны содержать требуемые переменные, типы данных которых должны совпадать с типами переменных, первоначально переданных в gencfeatures когда Transformer был создан.

    пример

    NewTbl = transform(Transformer,Tbl,Index) возвращает подмножество преобразованных функций, где Index указывает возвращаемые функции.

    Примеры

    свернуть все

    Сгенерируйте функции для обучения линейного классификатора. Вычислите ошибку классификации перекрестной валидации модели с помощью crossval функция.

    Загрузите ionosphere и создайте таблицу, содержащую данные предиктора.

    load ionosphere
    Tbl = array2table(X);

    Создайте случайный раздел для стратифицированной 5-кратной перекрестной проверки.

    rng("default") % For reproducibility of the partition
    cvp = cvpartition(Y,"KFold",5);

    Вычислите потери классификации перекрестной валидации для линейной модели, обученной на исходных функциях в Tbl.

    CVMdl = fitclinear(Tbl,Y,"CVPartition",cvp);
    cvloss = kfoldLoss(CVMdl)
    cvloss = 0.1339
    

    Создайте пользовательскую функцию myloss (показан в конце этого примера). Эта функция генерирует 20 признаков из обучающих данных, а затем применяет те же преобразования набора обучающих данных к тестовым данным. Затем функция подбирает линейный классификатор к обучающим данным и вычисляет потерю тестового набора.

    Примечание: Если вы используете файл live скрипта для этого примера, myloss функция уже включена в конец файла. В противном случае вам нужно создать эту функцию в конце файла .m или добавить ее в качестве файла по пути MATLAB ®.

    Вычислите потери классификации перекрестной валидации для линейной модели, обученной функциям, сгенерированным предикторами в Tbl.

    newcvloss = mean(crossval(@myloss,Tbl,Y,"Partition",cvp))
    newcvloss = 0.0770
    
    function testloss = myloss(TrainTbl,trainY,TestTbl,testY)
    [Transformer,NewTrainTbl] = gencfeatures(TrainTbl,trainY,20);
    NewTestTbl = transform(Transformer,TestTbl);
    Mdl = fitclinear(NewTrainTbl,trainY);
    testloss = loss(Mdl,NewTestTbl,testY, ...
        "LossFun","classiferror");
    end

    Обучите линейный классификатор, используя только числовые сгенерированные функции, возвращенные gencfeatures.

    Загрузите patients набор данных. Составьте таблицу из подмножества переменных.

    load patients
    Tbl = table(Age,Diastolic,Height,SelfAssessedHealthStatus, ...
        Smoker,Systolic,Weight,Gender);

    Разделите данные на обучающие и тестовые наборы. Используйте приблизительно 70% наблюдений в качестве обучающих данных и 30% наблюдений в качестве тестовых данных. Разделите данные на разделы с помощью cvpartition.

    rng("default")
    c = cvpartition(Tbl.Gender,"Holdout",0.30);
    TrainTbl = Tbl(training(c),:);
    TestTbl = Tbl(test(c),:);

    Используйте обучающие данные, чтобы сгенерировать 25 новые возможности. Укажите метод выбора признаков минимальной избыточности (MRMR) для выбора новых возможностей.

    Transformer = gencfeatures(TrainTbl,"Gender",25, ...
        "FeatureSelectionMethod","mrmr")
    Transformer = 
      FeatureTransformer with properties:
    
                         Type: 'classification'
                TargetLearner: 'linear'
        NumEngineeredFeatures: 24
          NumOriginalFeatures: 1
             TotalNumFeatures: 25
    
    

    Смотрите сгенерированные функции.

    Info = describe(Transformer)
    Info=25×4 table
                                          Type        IsOriginal         InputVariables                                              Transformations                                      
                                       ___________    __________    ________________________    __________________________________________________________________________________________
    
        c(SelfAssessedHealthStatus)    Categorical      true        SelfAssessedHealthStatus    "Variable of type categorical converted from a cell data type"                            
        eb5(Weight)                    Categorical      false       Weight                      "Equal-width binning (number of bins = 5)"                                                
        zsc(sqrt(Systolic))            Numeric          false       Systolic                    "sqrt( ) -> Standardization with z-score (mean = 11.086, std = 0.29694)"                  
        zsc(sin(Systolic))             Numeric          false       Systolic                    "sin( ) -> Standardization with z-score (mean = -0.1303, std = 0.72575)"                  
        zsc(Systolic./Weight)          Numeric          false       Systolic, Weight            "Systolic ./ Weight -> Standardization with z-score (mean = 0.82662, std = 0.14555)"      
        zsc(Age+Weight)                Numeric          false       Age, Weight                 "Age + Weight -> Standardization with z-score (mean = 191.1143, std = 28.6976)"           
        zsc(Age./Weight)               Numeric          false       Age, Weight                 "Age ./ Weight -> Standardization with z-score (mean = 0.25424, std = 0.062486)"          
        zsc(Diastolic.*Weight)         Numeric          false       Diastolic, Weight           "Diastolic .* Weight -> Standardization with z-score (mean = 12864.6857, std = 2731.1613)"
        q6(Height)                     Categorical      false       Height                      "Equiprobable binning (number of bins = 6)"                                               
        zsc(Systolic+Weight)           Numeric          false       Systolic, Weight            "Systolic + Weight -> Standardization with z-score (mean = 276.1429, std = 28.7111)"      
        zsc(Diastolic-Weight)          Numeric          false       Diastolic, Weight           "Diastolic - Weight -> Standardization with z-score (mean = -69.4286, std = 26.2411)"     
        zsc(Age-Weight)                Numeric          false       Age, Weight                 "Age - Weight -> Standardization with z-score (mean = -115.2, std = 27.0113)"             
        zsc(Height./Weight)            Numeric          false       Height, Weight              "Height ./ Weight -> Standardization with z-score (mean = 0.44797, std = 0.067992)"       
        zsc(Height.*Weight)            Numeric          false       Height, Weight              "Height .* Weight -> Standardization with z-score (mean = 10291.0714, std = 2111.9071)"   
        zsc(Diastolic+Weight)          Numeric          false       Diastolic, Weight           "Diastolic + Weight -> Standardization with z-score (mean = 236.8857, std = 29.2439)"     
        zsc(Age.*Weight)               Numeric          false       Age, Weight                 "Age .* Weight -> Standardization with z-score (mean = 5836.5571, std = 1621.0685)"       
          ⋮
    
    

    Преобразуйте наборы обучения и тестирования, но сохраните только числовые предикторы.

    numericIdx = (Info.Type == "Numeric");
    NewTrainTbl = transform(Transformer,TrainTbl,numericIdx);
    NewTestTbl = transform(Transformer,TestTbl,numericIdx);

    Обучите линейную модель с помощью преобразованных обучающих данных. Визуализируйте точность предсказаний тестового набора модели с помощью матрицы неточностей.

    Mdl = fitclinear(NewTrainTbl,TrainTbl.Gender);
    testLabels = predict(Mdl,NewTestTbl);
    confusionchart(TestTbl.Gender,testLabels)

    Входные параметры

    свернуть все

    Характерный трансформатор, заданный как FeatureTransformer объект.

    Функции для преобразования, заданные как таблица. Строки должны соответствовать наблюдениям, а столбцы должны соответствовать предикторам, используемым для генерации преобразованных функций, сохраненных в Transformer. Можно ввести describe(Transformer).InputVariables чтобы увидеть список функций, которые Tbl должен содержать.

    Типы данных: table

    Возвращаемые функции, заданные как числовой или логический вектор, указывающий положение признаков, или строковые массивы или массив ячеек векторов символов, указывающих имена признаков.

    Пример: 1:12

    Типы данных: single | double | logical | string | cell

    Выходные аргументы

    свернуть все

    Преобразованные функции, возвращенные как таблица. Каждая строка соответствует наблюдению, и каждый столбец соответствует сгенерированной функции.

    Введенный в R2021a
    Для просмотра документации необходимо авторизоваться на сайте