Сгенерированные преобразования функции
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.