FeatureTransformer

Сгенерированные преобразования функции

    Описание

    FeatureTransformer объект содержит информацию о преобразованиях функции, сгенерированных от обучающего набора данных. Чтобы лучше изучить генерированные признаки, можно использовать describe объектная функция. Чтобы применить тот же набор обучающих данных показывают преобразования к набору тестов, можно использовать transform объектная функция.

    Создание

    Создайте FeatureTransformer объект при помощи gencfeatures функция.

    Свойства

    развернуть все

    Это свойство доступно только для чтения.

    Тип модели в виде 'classification'.

    Это свойство доступно только для чтения.

    Ожидаемый тип ученика в виде 'linear' или 'bag'. Программное обеспечение создает и выбирает новые возможности, принимающие, что они будут использоваться, чтобы обучить линейный классификатор или сложенный в мешок классификатор ансамбля, соответственно.

    Это свойство доступно только для чтения.

    Количество спроектированных признаков, генерированных gencfeatures и сохраненный в FeatureTransformer, возвращенный как неотрицательный скаляр.

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

    Это свойство доступно только для чтения.

    Количество исходных функций, сохраненных gencfeatures и сохраненный в FeatureTransformer, возвращенный как неотрицательный скаляр.

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

    Это свойство доступно только для чтения.

    Общее количество функций сохранено в FeatureTransformer, возвращенный как неотрицательный скаляр. TotalNumFeatures равняется сумме NumEngineeredFeatures и NumOriginalFeatures.

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

    Функции объекта

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

    Примеры

    свернуть все

    Генерируйте признаки из таблицы данных о предикторе при помощи gencfeatures. Смотрите генерированные признаки при помощи describe объектная функция.

    Считайте данные об отключении электроэнергии в рабочую область как таблица. Удалите наблюдения с отсутствующими значениями и отобразите первые несколько строк таблицы.

    outages = readtable("outages.csv");
    Tbl = rmmissing(outages);
    head(Tbl)
    ans=8×6 table
           Region           OutageTime        Loss     Customers     RestorationTime            Cause       
        _____________    ________________    ______    __________    ________________    ___________________
    
        {'SouthWest'}    2002-02-01 12:18    458.98    1.8202e+06    2002-02-07 16:50    {'winter storm'   }
        {'SouthEast'}    2003-02-07 21:15     289.4    1.4294e+05    2003-02-17 08:14    {'winter storm'   }
        {'West'     }    2004-04-06 05:44    434.81    3.4037e+05    2004-04-06 06:10    {'equipment fault'}
        {'MidWest'  }    2002-03-16 06:18    186.44    2.1275e+05    2002-03-18 23:23    {'severe storm'   }
        {'West'     }    2003-06-18 02:49         0             0    2003-06-18 10:54    {'attack'         }
        {'NorthEast'}    2003-07-16 16:23    239.93         49434    2003-07-17 01:12    {'fire'           }
        {'MidWest'  }    2004-09-27 11:09    286.72         66104    2004-09-27 16:37    {'equipment fault'}
        {'SouthEast'}    2004-09-05 17:48    73.387         36073    2004-09-05 20:46    {'equipment fault'}
    
    

    Некоторые переменные, такие как OutageTime и RestorationTime, имейте типы данных, которые не поддерживаются функциями обучения классификатора как fitcensemble.

    Генерируйте 25 признаков от предикторов в Tbl это может использоваться, чтобы обучить уволенный ансамбль. Задайте Region табличная переменная как ответ.

    Transformer = gencfeatures(Tbl,"Region",25,"TargetLearner","bag")
    Transformer = 
      FeatureTransformer with properties:
    
                         Type: 'classification'
                TargetLearner: 'bag'
        NumEngineeredFeatures: 22
          NumOriginalFeatures: 3
             TotalNumFeatures: 25
    
    

    Transformer объект содержит информацию о генерированных признаках, и преобразования раньше создавали их.

    Чтобы лучше изучить генерированные признаки, используйте describe объектная функция.

    Info = describe(Transformer)
    Info=25×4 table
                                         Type        IsOriginal          InputVariables                                                            Transformations                                                 
                                      ___________    __________    ___________________________    _________________________________________________________________________________________________________________
    
        Loss                          Numeric          true        Loss                           ""                                                                                                               
        Customers                     Numeric          true        Customers                      ""                                                                                                               
        c(Cause)                      Categorical      true        Cause                          "Variable of type categorical converted from a cell data type"                                                   
        RestorationTime-OutageTime    Numeric          false       OutageTime, RestorationTime    "Elapsed time in seconds between OutageTime and RestorationTime"                                                 
        sdn(OutageTime)               Numeric          false       OutageTime                     "Serial date number from 01-Feb-2002 12:18:00"                                                                   
        woe3(c(Cause))                Numeric          false       Cause                          "Variable of type categorical converted from a cell data type -> Weight of Evidence (positive class = SouthEast)"
        doy(OutageTime)               Numeric          false       OutageTime                     "Day of the year"                                                                                                
        year(OutageTime)              Numeric          false       OutageTime                     "Year"                                                                                                           
        kmd1                          Numeric          false       Loss, Customers                "Euclidean distance to centroid 1 (kmeans clustering with k = 10)"                                               
        kmd5                          Numeric          false       Loss, Customers                "Euclidean distance to centroid 5 (kmeans clustering with k = 10)"                                               
        quarter(OutageTime)           Numeric          false       OutageTime                     "Quarter of the year"                                                                                            
        woe2(c(Cause))                Numeric          false       Cause                          "Variable of type categorical converted from a cell data type -> Weight of Evidence (positive class = NorthEast)"
        year(RestorationTime)         Numeric          false       RestorationTime                "Year"                                                                                                           
        month(OutageTime)             Numeric          false       OutageTime                     "Month of the year"                                                                                              
        Loss.*Customers               Numeric          false       Loss, Customers                "Loss .* Customers"                                                                                              
        tods(OutageTime)              Numeric          false       OutageTime                     "Time of the day in seconds"                                                                                     
          ⋮
    
    

    Info таблица показывает следующее:

    • Первые три генерированных признака являются исходными к Tbl, несмотря на то, что программное обеспечение преобразует исходный Cause переменная к категориальной переменной c(Cause).

    • OutageTime и RestorationTime переменные не включены как генерированные признаки, потому что они - datetime переменные, которые не могут использоваться, чтобы обучить сложенную в мешок модель ансамбля. Однако программное обеспечение выводит многие генерированные признаки от этих переменных, таких как четвертая функция RestorationTime-OutageTime.

    • Некоторыми генерированными признаками является комбинация нескольких преобразований. Например, программное обеспечение генерирует шестой признак woe3(c(Cause)) путем преобразования Cause переменная к категориальной переменной и затем вычислению Веса значений Доказательства для получившейся переменной.

    Обучите линейный классификатор, использующий только числовые генерированные признаки, возвращенные 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)

    Введенный в R2021a