分类自动化特征工程
的gencfeatures
函数使您能够在机器学习工作流的上下文中自动化特性工程过程。在将表格式训练数据传递给分类器之前,您可以使用gencfeatures
.使用返回的数据来训练分类器。
根据机器学习工作流生成新功能。
要为可解释的二进制分类器生成特征,请使用默认值
TargetLearner
的价值“线性”
在对gencfeatures
.然后,您可以使用返回的数据来训练二进制线性分类器。有关示例,请参见用生成的特征解释线性模型.要生成可以导致更好的模型精度的特征,请指定
TargetLearner = "包"
或TargetLearner = " gaussian-svm "
在对gencfeatures
.然后,您可以使用返回的数据分别训练袋装集成分类器或具有高斯核的二进制支持向量机(SVM)分类器。金宝app有关示例,请参见生成新特征以提高装袋集成精度.
为了更好地理解生成的特性,可以使用描述
的功能FeatureTransformer
对象。若要将相同的训练集特征转换应用于测试或验证集,请使用变换
的功能FeatureTransformer
对象。
用生成的特征解释线性模型
使用自动化的特性工程来生成新的特性。使用生成的特征训练一个线性分类器。解释生成的特征和训练的模型之间的关系。
加载病人
数据集。从变量的子集创建一个表。显示表的前几行。
负载病人Tbl = table(年龄,舒张压,性别,身高,自我评估健康状况,...收缩压、体重、吸烟);头(台)
年龄舒张性别身高SelfAssessedHealthStatus收缩期体重吸烟者 ___ _________ __________ ______ ________________________ ________ ______ ______ 38 93{‘男性’}71{‘优秀’}124 176真的43 77{‘男性’}69{‘公平’}109 163假38 83{‘女性’}{‘好’}64 125 131假40 75{‘女性’}{‘公平’}67 117 133假49 80{‘女性’}{‘好’}64 122 119假46 70{‘女性’}{‘好’}68 121 142错误33 88{‘女性’}{‘好’}64 130 142真的40 82{‘男性’}{‘好’}68 115 180false
中的变量生成10个新特性资源描述
.指定吸烟者
变量作为响应。默认情况下,gencfeatures
假设新特征将用于训练二进制线性分类器。
rng (“默认”)%用于再现性[T,NewTbl] =“抽烟”,10)
T = FeatureTransformer与属性:类型:'分类' TargetLearner: '线性' NumEngineeredFeatures: 10 NumOriginalFeatures: 0 TotalNumFeatures: 10
NewTbl =100×11表zsc(收缩压。^ 2)eb8(舒张压)处置(收缩压)eb8(收缩压)处置(舒张压)zsc (kmd9) zsc (sin(年龄))zsc (sin(重量))zsc (Height-Systolic) zsc (kmc1)吸烟者 ________________ ______________ ____________ _____________ _____________ _________ _____________ ________________ ____________________ _________ ______ 0.15379 8 6 4 8真正-1.7207 0.50027 0.19202 0.40418 0.76177 -1.9421 - 2 1 1 2 0.30311 -0.22056 -1.1319 -0.4009 2.3431 1.1617假4 6 5 5 -0.85785 0.57695 0.50027 -1.037 -0.78898 -1.4456假2 22 2 0.83391 1.1495 1.3039 0.85162 -0.010294 false -0.14125 3 5 4 4 1.779 -1.3083 -0.42387 -0.34154 0.99368 false -0.28697 1 4 3 1 0.67326 1.3761 -0.72529 0.40418 1.3755 false 1.0677 6 8 6 6 -0.42521 1.5181 -0.72529 -1.5347 -1.4456 true -1.1361 4 2 2 5 -0.79995 1.1495 -1.0225 1.2991 1.1617 false -1.1361 3 2 2 3 -0.80136 0.46343 1.0806 1.2991 -1.208 false -0.71693 5 3 3 6 0.37961 -0.51304 0.16741 0.55333 -1.4456 false -1.2734 2 1 1 2 1.2572 1.3025 1.0978 1.4482 -0.010294 false -1.1361 1 2 2 1 1.001 -1.2545 -1.2194 1.0008 -0.010294 false 0.60534 1 6 5 1 -0.98493 -0.11998 -1.211 -0.043252 -1.208 false 1.0677 8 8 6 8 -0.27307 1.4659 1.2168 -0.34154 0.24706 true -1.2734 3 1 1 4 0.93395 -1.3633 -0.17603 1.0008 -0.010294 false 1.0677 7 8 6 8 -0.91396 -1.04 -1.2109 -0.49069 0.24706 true ⋮
T
是一个FeatureTransformer
对象,该对象可用于转换新数据newTbl
控件生成的新特性资源描述
数据。
为了更好地理解生成的特性,可以使用描述
的对象函数。FeatureTransformer
对象。例如,检查前两个生成的特性。
描述(T, 1:2)
类型IsOriginal数据源转换 ___________ __________ ______________ _______________________________________________________________ zsc(收缩压。^ 2)数字错误的收缩力量(2)标准化与z分数(= 15119.54,std = 1667.5858) eb8(舒张压)分类错误的舒张Equal-width装箱(箱子的数量= 8)
第一个专题newTbl
的值的平方所创建的数值变量收缩压
变量,然后将结果转换为z分数。第二个特点是newTbl
类的值的分类变量舒张压
变量分成8个等宽的箱子。
使用生成的特征来拟合一个线性分类器,而不需要任何正则化。
Mdl = fitclinear(NewTbl,“抽烟”λ= 0);
绘制用于训练的预测器的系数Mdl
.请注意,fitclinear
在拟合模型之前展开分类预测器。
p = length(Mdl.Beta);[sortedCoefs,expandedIndex] = sort(Mdl. coefs)。β,ComparisonMethod =“abs”);sortedExpandedPreds = mld . expandedpredictornames (expandedIndex);栏(sortedCoefs水平=“上”yticklabels(sortedExpandedPreds(1:2:end)) xlabel(“系数”) ylabel (“扩展预测”)标题(展开预测器的系数)
确定系数绝对值较大的预测因子。
bigCoefs = abs(sortedCoefs) >= 4;翻转(sortedExpandedPreds (bigCoefs))
ans =1 x7单元格列1到列3 {'zsc(收缩压.^2)'}{'eb8(收缩压)…'} {eb8(舒张压)…'}列4到6 {'q8(舒张期)…'} {'q8(收缩期)>= 6'}{'q8(舒张期)…'}列7 {'zsc(Height-Sys…'}
您可以使用部分依赖图来分析级别具有较大绝对值系数的分类特征。的部分依赖关系图处置(舒张压)
变量,其级别q8(舒张期)>= 3
而且q8(舒张期)>= 6
有大绝对值的系数。这两个水平对应着预测分数的显著变化。
plotPartialDependence (Mdl“处置(舒张压)”、Mdl.ClassNames NewTbl);
生成新特征以提高装袋集成精度
使用gencfeatures
在训练袋装集成分类器之前设计新特征。在对新数据进行预测之前,对新数据集应用相同的特征转换。比较使用工程特性的集成的测试集性能与使用原始特性的集成的测试集性能。
阅读示例文件CreditRating_Historical.dat
变成一个表。预测数据包括公司客户列表的财务比率和行业部门信息。响应变量由评级机构指定的信用评级组成。预览数据集的前几行。
信用评级=可读(“CreditRating_Historical.dat”);头(creditrating)
ID WC_TA RE_TA EBIT_TA MVE_BVTD S_TA行业评级 _____ ______ ______ _______ ________ _____ ________ _______ 62394 0.013 0.104 0.036 0.447 0.142 3{“BB”}48608 0.232 0.335 0.062 1.969 0.281 8 {A} 42444 0.311 0.367 0.074 1.935 0.366 1 {A} 48631 0.194 0.263 0.062 1.017 0.228 - 4 {BBB的}43768 0.121 0.413 0.057 3.647 0.466 12 {' AAA '} 39255 -0.117 -0.799 0.01 0.179 0.082 - 4{“CCC”}62236 0.087 0.158 0.049 0.816 0.324 - 2 {BBB的}39354 0.005 0.181 0.034 2.597 0.388 7{“AA”}
的每一个值ID
变量是唯一的客户ID,即长度(独特(creditrating.ID))
等于在creditrating
,ID
变量是一个糟糕的预测器。删除ID
变量,并将行业
变量到a分类
变量。
信用评级= removevars(信用评级,“ID”);creditrating。行业= categorical(creditrating.Industry);
转换评级
对序数的响应变量分类
变量。
creditrating。评级= categorical(creditrating.Rating,...[“AAA”,“AA”,“一个”," BBB ",“BB”,“B”,“CCC”),序数= true);
将数据划分为训练集和测试集。使用大约75%的观测数据作为训练数据,25%的观测数据作为测试数据。使用cvpartition
.
rng (“默认”)用于分区的再现性c = cvpartition(creditrating.Rating,Holdout=0.25);trainingIndices = training(c);%训练集的指数testIndices =测试(c);%测试集的索引creditTrain =信用评级(trainingIndices,:);creditTest = creditrating(testIndices,:);
使用训练数据生成40个新特征来适应一个集合。默认情况下,这40个特性包括原始特性,可以被打包集成用作预测器。
[T,newCreditTrain] =“评级”现年40岁的...TargetLearner =“包”);T
T = FeatureTransformer with properties: Type: 'classification' TargetLearner: 'bag' NumEngineeredFeatures: 34 NumOriginalFeatures: 6 TotalNumFeatures: 40
创建newCreditTest
通过应用存储在对象中的转换T
对测试数据。
newCreditTest = transform(T,creditTest);
比较在原始特征上训练的袋装集合和在新特征上训练的袋装集合的测试集性能。
使用原始训练集训练一个袋装集合creditTrain
.计算模型在原始测试集上的准确性信贷
.使用混淆矩阵将结果可视化。
originalMdl = fitcensemble(信贷列车,“评级”方法=“包”);originalTestAccuracy = 1 - loss(originalMdl,creditTest,...“评级”LossFun =“classiferror”)
originalTestAccuracy = 0.7522
predictedTestLabels = predict(originalMdl,creditTest);confusionchart (creditTest.Rating predictedTestLabels);
使用转换后的训练集训练一个袋装集合newCreditTrain
.计算模型在转换后的测试集上的准确性newCreditTest
.使用混淆矩阵将结果可视化。
newMdl = fitcensemble(newCreditTrain,“评级”方法=“包”);newTestAccuracy = 1 - loss(newMdl,newCreditTest,...“评级”LossFun =“classiferror”)
newTestAccuracy = 0.7512
newPredictedTestLabels = predict(newMdl,newCreditTest);confusionchart (newCreditTest.Rating newPredictedTestLabels)
在转换后的数据上训练的袋装集合似乎优于在原始数据上训练的袋装集合。
另请参阅
gencfeatures
|FeatureTransformer
|描述
|变换
|fitclinear
|fitcensemble
|fitcsvm
|plotPartialDependence
|genrfeatures