张量流是否具有类似于scikit Learn的一种用于处理分类数据的热编码器?使用tf.string的占位符会表现为分类数据吗?
我意识到我可以在将数据发送到tensorflow之前对其进行手动预处理,但是将其内置非常方便。
从TensorFlow
0.8开始,现在有一个原生的一站式操作,tf.one_hot
可以将一组稀疏标签转换为密集的一站式表示形式。这是的补充tf.nn.sparse_softmax_cross_entropy_with_logits
,在某些情况下,您可以使您直接在稀疏标签上计算交叉熵,而不必将其转换为单热点。
以前的答案,以防您想采用旧方法: @Salvador的答案是正确的-
以前(过去)没有本机操作。但是,您可以使用稀疏到密集运算符在tensorflow中本地执行此操作,而不是在numpy中执行此操作:
num_labels = 10
# label_batch is a tensor of numeric labels to process
# 0 <= label < num_labels
sparse_labels = tf.reshape(label_batch, [-1, 1])
derived_size = tf.shape(label_batch)[0]
indices = tf.reshape(tf.range(0, derived_size, 1), [-1, 1])
concated = tf.concat(1, [indices, sparse_labels])
outshape = tf.pack([derived_size, num_labels])
labels = tf.sparse_to_dense(concated, outshape, 1.0, 0.0)
输出,labels,是batch_size x num_labels的单矩阵。
还要注意的是,从2016年2月12日开始(我认为最终将成为0.7版本的一部分),TensorFlow还提供了tf.nn.sparse_softmax_cross_entropy_with_logits
op,在某些情况下可以让您进行训练而无需转换为单编码。
编辑添加:最后,您可能需要显式设置标签的形状。形状推断无法识别num_labels组件的大小。如果您不需要带有Derived_size的动态批处理大小,则可以简化此过程。
编辑于2016年2月12日,更改了以下每个注释的形状分配。
我试图在Iris数据集中的目标列(“物种”)上使用一个热编码器。 但我得到了以下错误: ValueError:预期的2D数组,得到1D数组代替: 使用数组或数组重塑数据的形状。如果数据具有单个要素或阵列,则重塑(-1,1)。如果(1,-1)包含单个样本,则重塑其形状。 我在谷歌上搜索了这个问题,发现大多数scikit学习估计器都需要2D数组,而不是一维数组。 同时,我还发现,我们可以尝试传递带有索
如果我们不确定分类特征的性质,比如它们是名词性的还是序数的,我们应该使用哪种编码?顺序编码还是一个热编码?关于这个话题有没有明确的规定? 我看到很多人对没有方向的分类数据使用顺序编码。假设一个频率表: 有很多人更喜欢在这个专栏上做顺序编码。我非常想用一热编码。我对此的看法是,做序数编码会给这些颜色分配一些有序的数字,这意味着一个排名。而且没有排名第一。换句话说,我的模型不应该认为color_whi
我在列表中有一个列名称,我想对列表中的列中的值进行热编码。我想从数据集中对分类变量进行编码。我尝试了几个过程,但它给我带来了一个错误 它抛出的错误 回溯(最后一次调用):文件“preprocessing.py”,第83行,trainig_set_ed[col]=clfs[col].fit_transform(trainig_set_ed[col])文件“/root/.local/lib/pytho
我有一次性编码的标签。我想用它们来训练和预测一个catBooked分类器。然而,当我拟合时,它给我一个错误,说标签每行不允许多个整数值。那么,猫推不允许标签的一次性编码吗?如果没有,我怎样才能让猫助推工作?
问题内容: 如果输入为零,我想制作一个看起来像这样的数组: 如果输入为5: 对于以上内容,我写道: 但它没有用。 有什么方法可以在一线实现? 问题答案: 通常,当您想在机器学习中使用单编码进行分类时,就会有一组索引。 在现在 使用可以确保您使用正确的标签格式(也可能使用)。该值是一个特殊值,表示“将所有剩余的物料放入此维”。因为只有一个,所以它使阵列变平。 复制粘贴解决方案 包 您可以使用mpu.
问题内容: 给出了可变长度特征的列表: 每个样本具有不同数量的功能,并且该功能已经并且很热门。 为了使用sklearn的特征选择实用程序,我必须将转换为2D数组,如下所示: 如何通过sklearn或numpy实现它? 问题答案: 您可以使用scikit中存在的MultiLabelBinarizer专门用于执行此操作。 您的示例代码: 输出: 它也可以与其他feature_selection实用程序