美文网首页
标签二值化LabelBinarizer

标签二值化LabelBinarizer

作者: 三方斜阳 | 来源:发表于2021-05-18 19:32 被阅读0次

1. LabelBinarizer

来自 sklearn.preprocessing 的一个实用工具,将标签型数据转换为 0 或 1,对于二类以上的数据,转换为对应的 onehot 向量,具体看例子:

from sklearn.preprocessing import LabelBinarizer
from sklearn import tree
# 特征矩阵
featureList=[[1,0],[1,1],[0,0],[0,1]]
# 标签矩阵
labelList=['yes', 'no', 'no', 'yes']
# 将标签矩阵二值化
encoder = LabelBinarizer()
label=encoder.fit_transform(labelList)
print(label)
# 模型建立和训练
clf = tree.DecisionTreeClassifier()#决策树分类器
clf = clf.fit(featureList, label)
p=clf.predict([[0,1]])
print(p)

# 逆过程
yes_or_no=encoder.inverse_transform(p)
print(yesORno)
>>
[[1]
[0]
[0]
[1]]
[1]
['yes']
>>
多种类型可以转换为对应的 onehot 向量,类似于这种:
salary_onehot = encoder.fit_transform(data['salary'])#转换成onehot
print('salary_onehot:',salary_onehot)
>>
[[0 0 1]
[0 0 1]
[0 1 0]
...
[0 0 1]
[1 0 0]
[0 1 0]]

2. StandardScaler

  • 数据归一化:
    机器学习应用的时候大部分时间是花费在特征处理上,其中很关键的一步就是对特征数据进行归一化,为什么要进行归一化呢?
  1. 归一化后加快了梯度下降求最优解的速度:
    如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要,否则很难收敛甚至不能收敛
  2. 归一化有可能提高精度:
    一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)
  3. StandardScaler 原理:

    去均值和方差归一化,且是针对每一个特征维度来做的,而不是针对样本,
from sklearn.preprocessing import StandardScaler 
import numpy as np
 
x_np = np.array([[1.5, -1., 2.],
                [2., 0., 0.]])
scaler = StandardScaler()
x_train = scaler.fit_transform(x_np)
print(x_np)
print(x_train)

相关文章

网友评论

      本文标题:标签二值化LabelBinarizer

      本文链接:https://www.haomeiwen.com/subject/xvuyjltx.html