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