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