Nan*_*mar 1 python machine-learning sklearn-pandas
我使用sklearn进行文本分类,我的所有功能都是数字,但我的目标变量标签是文本.我可以理解编码特征到数字的基本原理,但不认为这适用于目标变量?
如果您的目标变量是文本形式,您可以将其转换为数字形式(或者您可以不管它,请参阅下面的注释),以便任何Scikit-learn算法在OVA(One Versus All)方案中选择它:您的学习算法将尝试猜测每个类与剩余类相比,只有当它们将被转换为从0开始的数字代码(类的数量 - 1).
例如,在Scikit-Learn文档的这个示例中,您可以找出虹膜的类,因为有三个模型可以评估每个可能的类:
当然,0,1和2类是Setosa,Versicolor和Virginica,但算法需要将它们表示为数字代码,因为您可以通过浏览示例代码的结果来验证:
list(iris.target_names)
['setosa', 'versicolor', 'virginica']
np.unique(Y)
array([0, 1, 2])
Run Code Online (Sandbox Code Playgroud)
注意:如果Scikit-learn是字符串,那么它本身就会编码目标标签.在Scikit-learn的逻辑回归的Github页面上(https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/linear_model/logistic.py),您可以在第1623和1624行看到代码调用标签编码器,它自动编码标签:
Run Code Online (Sandbox Code Playgroud)# Encode for string labels label_encoder = LabelEncoder().fit(y) y = label_encoder.transform(y)