Созданные преобразования элементов
A FeatureTransformer объект содержит информацию о преобразованиях элементов, созданных из набора учебных данных. Чтобы лучше понять сгенерированные функции, можно использовать describe объектная функция. Чтобы применить те же преобразования функций обучающего набора к тестовому набору, можно использовать transform объектная функция.
Создать FeatureTransformer с помощью gencfeatures функция.
Type - Тип модели'classification'Это свойство доступно только для чтения.
Тип модели, указанный как 'classification'.
TargetLearner - Ожидаемый тип учащегося'linear' | 'bag'Это свойство доступно только для чтения.
Ожидаемый тип учащегося, указанный как 'linear' или 'bag'. Программное обеспечение создает и выбирает новые функции, предполагая, что они будут использоваться для обучения линейного классификатора или упакованного ансамбля классификатора, соответственно.
NumEngineeredFeatures - Количество проектируемых элементовЭто свойство доступно только для чтения.
Количество конструкторских элементов, созданных gencfeatures и хранятся в FeatureTransformer, возвращенный как неотрицательный скаляр.
Типы данных: double
NumOriginalFeatures - Количество оригинальных элементовЭто свойство доступно только для чтения.
Количество исходных элементов, сохраненных gencfeatures и хранятся в FeatureTransformer, возвращенный как неотрицательный скаляр.
Типы данных: double
TotalNumFeatures - Общее количество функцийЭто свойство доступно только для чтения.
Общее количество элементов, сохраненных в FeatureTransformer, возвращенный как неотрицательный скаляр. TotalNumFeatures равно сумме NumEngineeredFeatures и NumOriginalFeatures.
Типы данных: double
Создание функций из таблицы данных предиктора с помощью 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)

describe | fitcensemble | fitclinear | gencfeatures | transform
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.