exponenta event banner

FeatureTransformer

Созданные преобразования элементов

    Описание

    A 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