Сгенерированные преобразования функции
FeatureTransformer
объект содержит информацию о преобразованиях функции, сгенерированных от обучающего набора данных. Чтобы лучше изучить генерированные признаки, можно использовать describe
объектная функция. Чтобы применить тот же набор обучающих данных показывают преобразования к набору тестов, можно использовать transform
объектная функция.
Создайте FeatureTransformer
объект при помощи gencfeatures
или genrfeatures
функция.
Type
— Тип модели'classification'
| 'regression'
Это свойство доступно только для чтения.
Тип модели, возвращенной как 'classification'
или 'regression'
.
TargetLearner
— Ожидаемый тип ученика'linear'
| 'bag'
Это свойство доступно только для чтения.
Ожидаемый тип ученика, возвращенный как 'linear'
или 'bag'
. Программное обеспечение создает и выбирает новые возможности, принимающие, что они будут использоваться, чтобы обучить линейную модель или уволенный ансамбль, соответственно.
NumEngineeredFeatures
— Количество спроектированных функцийЭто свойство доступно только для чтения.
Количество спроектированных функций сохранено в FeatureTransformer
, возвращенный как неотрицательный скаляр.
Типы данных: double
NumOriginalFeatures
— Количество исходных функцийЭто свойство доступно только для чтения.
Количество исходных функций сохранено в FeatureTransformer
, возвращенный как неотрицательный скаляр.
Типы данных: double
TotalNumFeatures
— Общее количество функцийЭто свойство доступно только для чтения.
Общее количество функций сохранено в FeatureTransformer
, возвращенный как неотрицательный скаляр. TotalNumFeatures
равняется сумме NumEngineeredFeatures
и NumOriginalFeatures
.
Типы данных: double
Генерируйте признаки из таблицы данных о предикторе при помощи genrfeatures
. Смотрите генерированные признаки при помощи 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
, имейте типы данных, которые не поддерживаются функциями обучения модели регрессии как fitrensemble
.
Генерируйте 25 признаков от предикторов в Tbl
это может использоваться, чтобы обучить уволенный ансамбль. Задайте Loss
табличная переменная как ответ.
rng("default") % For reproducibility Transformer = genrfeatures(Tbl,"Loss",25,TargetLearner="bag")
Transformer = FeatureTransformer with properties: Type: 'regression' TargetLearner: 'bag' NumEngineeredFeatures: 22 NumOriginalFeatures: 3 TotalNumFeatures: 25
Transformer
объект содержит информацию о генерированных признаках, и преобразования раньше создавали их.
Чтобы лучше изучить генерированные признаки, используйте describe
объектная функция.
Info = describe(Transformer)
Info=25×4 table
Type IsOriginal InputVariables Transformations
___________ __________ ___________________________ ___________________________________________________________________
c(Region) Categorical true Region "Variable of type categorical converted from a cell data type"
Customers Numeric true Customers ""
c(Cause) Categorical true Cause "Variable of type categorical converted from a cell data type"
kmd2 Numeric false Customers "Euclidean distance to centroid 2 (kmeans clustering with k = 10)"
kmd1 Numeric false Customers "Euclidean distance to centroid 1 (kmeans clustering with k = 10)"
kmd4 Numeric false Customers "Euclidean distance to centroid 4 (kmeans clustering with k = 10)"
kmd5 Numeric false Customers "Euclidean distance to centroid 5 (kmeans clustering with k = 10)"
kmd9 Numeric false Customers "Euclidean distance to centroid 9 (kmeans clustering with k = 10)"
cos(Customers) Numeric false Customers "cos( )"
RestorationTime-OutageTime Numeric false OutageTime, RestorationTime "Elapsed time in seconds between OutageTime and RestorationTime"
kmd6 Numeric false Customers "Euclidean distance to centroid 6 (kmeans clustering with k = 10)"
kmi Categorical false Customers "Cluster index encoding (kmeans clustering with k = 10)"
kmd7 Numeric false Customers "Euclidean distance to centroid 7 (kmeans clustering with k = 10)"
kmd3 Numeric false Customers "Euclidean distance to centroid 3 (kmeans clustering with k = 10)"
kmd10 Numeric false Customers "Euclidean distance to centroid 10 (kmeans clustering with k = 10)"
hour(RestorationTime) Numeric false RestorationTime "Hour of the day"
⋮
Первые три генерированных признака являются исходными к Tbl
, несмотря на то, что программное обеспечение преобразует исходный Region
и Cause
переменные к categorical
переменные.
Info(1:3,:) % describe(Transformer,1:3)
ans=3×4 table
Type IsOriginal InputVariables Transformations
___________ __________ ______________ ______________________________________________________________
c(Region) Categorical true Region "Variable of type categorical converted from a cell data type"
Customers Numeric true Customers ""
c(Cause) Categorical true Cause "Variable of type categorical converted from a cell data type"
OutageTime
и RestorationTime
переменные не включены как генерированные признаки, потому что они - datetime
переменные, которые не могут использоваться, чтобы обучить сложенную в мешок модель ансамбля. Однако программное обеспечение выводит некоторые генерированные признаки из этих переменных, таких как десятая функция RestorationTime-OutageTime
.
Info(10,:) % describe(Transformer,10)
ans=1×4 table
Type IsOriginal InputVariables Transformations
_______ __________ ___________________________ ________________________________________________________________
RestorationTime-OutageTime Numeric false OutageTime, RestorationTime "Elapsed time in seconds between OutageTime and RestorationTime"
Некоторыми генерированными признаками является комбинация нескольких преобразований. Например, программное обеспечение генерирует девятнадцатый признак fenc(c(Cause))
путем преобразования Cause
переменная к категориальной переменной с 10 категориями и затем вычислением частоты категорий.
Info(19,:) % describe(Transformer,19)
ans=1×4 table
Type IsOriginal InputVariables Transformations
_______ __________ ______________ ____________________________________________________________________________________________________________
fenc(c(Cause)) Numeric false Cause "Variable of type categorical converted from a cell data type -> Frequency encoding (number of levels = 10)"
Обучите линейный классификатор, использующий только числовые генерированные признаки, возвращенные 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: 23 NumOriginalFeatures: 2 TotalNumFeatures: 25
Смотрите генерированные признаки.
Info = describe(Transformer)
Info=25×4 table
Type IsOriginal InputVariables Transformations
___________ __________ ________________________ __________________________________________________________________________________________
zsc(Weight) Numeric true Weight "Standardization with z-score (mean = 153.1571, std = 26.8229)"
eb5(Weight) Categorical false Weight "Equal-width binning (number of bins = 5)"
c(SelfAssessedHealthStatus) Categorical true SelfAssessedHealthStatus "Variable of type categorical converted from a cell data type"
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)"
⋮
Преобразуйте наборы обучающих данных и наборы тестов, но сохраните только числовые предикторы.
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)
gencfeatures
| genrfeatures
| describe
| transform
| fitclinear
| fitrlinear
| fitcensemble
| fitrensemble
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.