transform

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

    Описание

    пример

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

    пример

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

    Примеры

    свернуть все

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

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

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

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

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

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

    CVMdl = fitrlinear(Tbl,Systolic,CVPartition=cvp);
    cvloss = kfoldLoss(CVMdl)
    cvloss = 45.2594
    

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

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

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

    newcvloss = mean(crossval(@myloss,Tbl,Systolic,Partition=cvp))
    newcvloss = 26.7663
    
    function testloss = myloss(TrainTbl,trainY,TestTbl,testY)
    [Transformer,NewTrainTbl] = genrfeatures(TrainTbl,trainY,20);
    NewTestTbl = transform(Transformer,TestTbl);
    Mdl = fitrlinear(NewTrainTbl,trainY);
    testloss = loss(Mdl,NewTestTbl,testY);
    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: 23
          NumOriginalFeatures: 2
             TotalNumFeatures: 25
    
    

    Смотрите генерированные признаки.

    Info = describe(Transformer)
    Info=25×4 table
                                          Type        IsOriginal         InputVariables                                              Transformations                                      
                                       ___________    __________    ________________________    __________________________________________________________________________________________
    
        zsc(Weight)                    Numeric          true        Weight                      "Standardization with z-score (mean = 153.1571, std = 26.8229)"                           
        eb5(Weight)                    Categorical      false       Weight                      "Equal-width binning (number of bins = 5)"                                                
        c(SelfAssessedHealthStatus)    Categorical      true        SelfAssessedHealthStatus    "Variable of type categorical converted from a cell data type"                            
        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)"     
          ⋮
    
    

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

    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)

    Figure contains an object of type ConfusionMatrixChart.

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

    свернуть все

    Покажите трансформатор в виде FeatureTransformer объект.

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

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

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

    Пример: 1:12

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

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

    свернуть все

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

    Введенный в R2021a