TensorFlow计算距离特征

时间:2019-05-16 04:50:54

标签: tensorflow

我有一个使用纬度和经度的数据集: 我想为欧氏距离创建一个交叉特征:

origin_lat, origin_lon,dest_lat, dest_lon
41.857183858,-87.620334624,42.001571027,-87.695012589

我已经分别读取了4个不同的tf.float张量(tf.feature_column.numeric_column)

这是我创建的类似交叉列:

# Creating a boolean flag

capital_indicator = features['capital_gain'] > features['capital_loss']
features['capital_indicator'] = tf.cast(capital_indicator, dtype=tf.int32)

我想要这样的东西:

 euclid_distance = distance((['origin_lat', 'origin_lon']), (['dest_lat', 'dest_lon']))

1 个答案:

答案 0 :(得分:2)

对于欧几里得距离,我们可以使用以下公式:

euclidean distance formula

我们可以将其“翻译”为TensorFlow代码,如下所示:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<ul class="bar" id="bar">
  <li class="active">Register new PO</li>
  <li>Scan PO barcode</li>
  <li>Scan Operation barcode</li>
</ul>
</div>
<section id="cards">
  <div class="card">
    <h3 class="cardTitle">Register new PO</h3>
    <p class="cardText">Some description</p>
    <div class="actions">
      <a href="#" class="btn next startCO">Register new PO</a>
    </div>
  </div>
  <div class="card" id="CoStep1">
    <h3 class="cardTitle">Scan PO barcode</h3>
    <p class="cardText">Some description</p>
    <div class="input-style">
      <input type="text" class="POBarcode" placeholder="PO barcode">
      <div class="style"></div>
    </div>
    <div class="actions">
      <a href="#" class="btn prev">Prev</a>
      <a href="#" class="btn next coButton">Next</a>
    </div>
  </div>
  <div class="card" id="CoStep2">
    <h3 class="cardTitle">Scan Operation barcode</h3>
    <p class="cardText">Some description</p>
    <div class="input-style">
      <input type="text" placeholder="Operation barcode" class="Operation_barcode"> <button class="plusButton">+</button>
      <div class="style"></div>
    </div>
    <div class="actions">
      <a href="#" class="btn prev">Prev</a>
      <a href="#" class="btn next coButton startCO">Start CO</a>
    </div>
  </div>
</section>

我也许应该顺便提一句,对于坐标系使用欧几里得距离函数对平面来说是合适的,(当然)地球的纬度和经度都不适合!

地球的曲率使用经纬度的经度和纬度减小为“近似值”,该精度随着所涉及的距离和距赤道的距离而降低。您可能会很高兴在模型中接受这种近似。如果没有,那么您需要研究一下Haversine formula,这虽然有点复杂,但仍然应该可以在TensorFlow中使用