没有项目描述
target_encoding的Python项目详细描述
这个包提供了使用目标平均值编码的机会。
第一种方法是只编码从0到n-1的数字,其中n是唯一值的数目。这种编码称为labelencoding。
![第一](img/1.png)
这里我们创建的不是单个特征n个特征,其中n是唯一值的数目。对于每个对象,我们将0放在除k元素之外的所有位置,其中有1。
![秒](img/2.png)
[第三](img/3.png)
[第四](img/4.png)
可以看出,有几个类别,数量很少,或者没有出现在数据集中。这些数据可能会干扰模型,并且可以对这些数据进行重新训练。正如你所看到的,罗马只出现过一次,它的目标是0,那么每当我们对罗马进行编码时,我们都会用0替换它。这就是问题所在,我们的算法将被重新训练。为了避免这种情况,我们将使用平滑。
![第五](img/5.png)
![第六](img/6.png)
训练,如果我们在验证时使用验证,也不需要重新训练,我们在每个折叠中必须对折叠进行另一次拆分。
对于测试数据集,我们使用训练数据集中的所有数据进行编码。
![第七](img/7.png)
1.根据我们的新数据训练模型。
2.根据新老数据训练模型。
3.取新数据的平均值并将其用作预测。
加载乳腺癌
来自sklearn.model_selection import train_test_split
来自sklearn.ensemble import randomForestClassifier
来自sklearn.metrics import roc_auc_score
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,随机状态=42)
>enc=targetencorder()
>new_x_x列车=enc.transform_x列车(x=x_x列车,y=y=y_x列车)
>new_x_x检验=enc.transform检验(x_检验)
rf.fit(x_x列车,y_x列车)
>pred=rf.pred预测概率(x_x检验)[>rf.fit(x_列车,y=x_列车,y=y_列车)
>rf:,1]
print('无目标编码',roc-auc-auc评分(y_检验,pred))
rf.fit(新的x_列车,y_列车)
pred=rf.predic_-proba(新的x_列车,y_列车,y_列车)[:,1]
print(带目标编码,roc-auc-proc-auc评分(y_检验,pred)打印
enc.fit(x_列车,y_列车,y_列车)
pred=enc.prec.predic.predic.predic预测proba-proba-proba-proba(x_检验)[:,1]
打印('目标编码分类器',roc_auc_评分(y_检验,pred))
```
```
不带目标编码0.9952505732066819
带目标编码0.996560759908287
目标编码分类器0.9973796265967901
`````
_编码要求:
numpy==1.16.2
scikit learn==0.20.3
```
第一种方法是只编码从0到n-1的数字,其中n是唯一值的数目。这种编码称为labelencoding。
![第一](img/1.png)
这里我们创建的不是单个特征n个特征,其中n是唯一值的数目。对于每个对象,我们将0放在除k元素之外的所有位置,其中有1。
![秒](img/2.png)
[第三](img/3.png)
[第四](img/4.png)
可以看出,有几个类别,数量很少,或者没有出现在数据集中。这些数据可能会干扰模型,并且可以对这些数据进行重新训练。正如你所看到的,罗马只出现过一次,它的目标是0,那么每当我们对罗马进行编码时,我们都会用0替换它。这就是问题所在,我们的算法将被重新训练。为了避免这种情况,我们将使用平滑。
![第五](img/5.png)
![第六](img/6.png)
训练,如果我们在验证时使用验证,也不需要重新训练,我们在每个折叠中必须对折叠进行另一次拆分。
对于测试数据集,我们使用训练数据集中的所有数据进行编码。
![第七](img/7.png)
1.根据我们的新数据训练模型。
2.根据新老数据训练模型。
3.取新数据的平均值并将其用作预测。
加载乳腺癌
来自sklearn.model_selection import train_test_split
来自sklearn.ensemble import randomForestClassifier
来自sklearn.metrics import roc_auc_score
>enc=targetencorder()
>new_x_x列车=enc.transform_x列车(x=x_x列车,y=y=y_x列车)
>new_x_x检验=enc.transform检验(x_检验)
>pred=rf.pred预测概率(x_x检验)[>rf.fit(x_列车,y=x_列车,y=y_列车)
>rf:,1]
print('无目标编码',roc-auc-auc评分(y_检验,pred))
rf.fit(新的x_列车,y_列车)
pred=rf.predic_-proba(新的x_列车,y_列车,y_列车)[:,1]
print(带目标编码,roc-auc-proc-auc评分(y_检验,pred)打印
pred=enc.prec.predic.predic.predic预测proba-proba-proba-proba(x_检验)[:,1]
打印('目标编码分类器',roc_auc_评分(y_检验,pred))
```
```
不带目标编码0.9952505732066819
带目标编码0.996560759908287
目标编码分类器0.9973796265967901
`````
_编码要求:
numpy==1.16.2
scikit learn==0.20.3
```