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
    
    

    The 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"                                                                                     
          ⋮
    
    

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

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

    • The 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