没有项目描述

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
```

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java:不解析XML的简单XML。例外   KIE Workbench的java自定义UI   java将元素从bucket移动到LinkedList,但有一个元素被完全删除   如何将java stream collect转换为scala   java运行AsynkTask多次不工作   java组织。xml。萨克斯。SAXParseException:cvccomplextype。2.4.c:匹配的通配符是严格的   java是一种计算排序算法所需时间的合适方法   java在O(logn)时间内对排序整数数组中具有相同数字的数字进行计数   xpages从当前数据库javaAgent调用另一个数据库的javaAgent   java如何在instagram中上传特定位置的所有照片   JavaApachePOI可以有效地删除多个列   java创建的对象数   java我可以在关闭连接时关闭Oracle JDBC自动提交吗?