K-Means 聚类的估计器。
警告:不建议将估算器用于新代码。估算器运行 v1.Session
风格的代码,这更难以正确编写,并且可能会出现意外行为,尤其是与 TF 2 代码结合使用时。估算器确实属于我们的 compatibility guarantees ,但除了安全漏洞之外不会收到任何修复。有关详细信息,请参阅migration guide。
继承自: Estimator
用法
tf.compat.v1.estimator.experimental.KMeans(
num_clusters, model_dir=None, initial_clusters=RANDOM_INIT,
distance_metric=SQUARED_EUCLIDEAN_DISTANCE, seed=None, use_mini_batch=True,
mini_batch_steps_per_iteration=1, kmeans_plus_plus_num_retries=2,
relative_tolerance=None, config=None, feature_columns=None
)
参数
-
num_clusters
一个整数张量,指定集群的数量。如果initial_clusters
是张量或 numpy 数组,则忽略此参数。 -
model_dir
保存模型结果和日志文件的目录。 -
initial_clusters
指定如何选择初始聚类中心。以下之一: * 具有初始聚类中心的张量或 numpy 数组。 * 一个可调用的f(inputs, k)
选择并返回至k
来自输入批次的中心。f
可以自由返回任意数量的中心0
到k
.它将根据需要在连续的输入批次上调用,直到所有num_clusters
选择中心。KMeansClustering.RANDOM_INIT
:从输入批次中随机选择中心。如果批次大小小于num_clusters
,则选择整个批次作为初始聚类中心,其余中心从连续输入批次中选择。KMeansClustering.KMEANS_PLUS_PLUS_INIT
:使用 kmeans++ 从第一个输入批次中选择中心。如果批量大小小于num_clusters
,则会发生 TensorFlow 运行时错误。
-
distance_metric
用于聚类的距离度量。之一:KMeansClustering.SQUARED_EUCLIDEAN_DISTANCE
:向量u
和v
之间的欧几里得距离定义为 ,它是元素差的绝对平方和的平方根。KMeansClustering.COSINE_DISTANCE
:向量u
和v
之间的余弦距离定义为 。
-
seed
Python 整数。 PRNG 的种子用于初始化中心。 -
use_mini_batch
一个布尔值,指定是否使用小批量k-means 算法。见上面的解释。 -
mini_batch_steps_per_iteration
更新后的集群中心同步回主副本之前的步骤数。仅在use_mini_batch=True
时使用。见上面的解释。 -
kmeans_plus_plus_num_retries
对于在 kmeans++ 初始化期间采样的每个点,此参数指定在选择最佳之前从当前分布中抽取的附加点的数量。如果指定负值,则使用启发式方法对O(log(num_to_sample))
附加点进行采样。仅在initial_clusters=KMeansClustering.KMEANS_PLUS_PLUS_INIT
时使用。 -
relative_tolerance
迭代之间损失变化的相对容差。如果损失变化小于此数量,则停止学习。如果use_mini_batch=True
,这可能无法正常工作。 -
config
见tf.estimator.Estimator
。 -
feature_columns
包含模型使用的所有特征列的可选迭代。集合中的所有项目都应该是可以传递给tf.feature_column.input_layer
的特征列实例。如果这是无,将使用所有函数。
抛出
-
ValueError
将无效参数传递给initial_clusters
或distance_metric
。
属性
-
config
-
model_dir
-
model_fn
返回绑定到self.params
的model_fn
。 -
params
例子:
import numpy as np
import tensorflow as tf
num_points = 100
dimensions = 2
points = np.random.uniform(0, 1000, [num_points, dimensions])
def input_fn():
return tf.compat.v1.train.limit_epochs(
tf.convert_to_tensor(points, dtype=tf.float32), num_epochs=1)
num_clusters = 5
kmeans = tf.compat.v1.estimator.experimental.KMeans(
num_clusters=num_clusters, use_mini_batch=False)
# train
num_iterations = 10
previous_centers = None
for _ in xrange(num_iterations):
kmeans.train(input_fn)
cluster_centers = kmeans.cluster_centers()
if previous_centers is not None:
print 'delta:', cluster_centers - previous_centers
previous_centers = cluster_centers
print 'score:', kmeans.score(input_fn)
print 'cluster centers:', cluster_centers
# map the input points to their clusters
cluster_indices = list(kmeans.predict_cluster_index(input_fn))
for i, point in enumerate(points):
cluster_index = cluster_indices[i]
center = cluster_centers[cluster_index]
print 'point:', point, 'is in cluster', cluster_index, 'centered at', center
export_saved_model
方法保存的SavedModel
不包括聚类中心。但是,可以通过训练期间保存的最新检查点来检索聚类中心。具体来说,
kmeans.cluster_centers()
相当于
tf.train.load_variable(
kmeans.model_dir, KMeansClustering.CLUSTER_CENTERS_VAR_NAME)
相关用法
- Python tf.compat.v1.estimator.DNNEstimator用法及代码示例
- Python tf.compat.v1.estimator.tpu.RunConfig用法及代码示例
- Python tf.compat.v1.estimator.BaselineRegressor用法及代码示例
- Python tf.compat.v1.estimator.inputs.numpy_input_fn用法及代码示例
- Python tf.compat.v1.estimator.LinearRegressor用法及代码示例
- Python tf.compat.v1.estimator.BaselineEstimator用法及代码示例
- Python tf.compat.v1.estimator.BaselineClassifier用法及代码示例
- Python tf.compat.v1.estimator.LinearClassifier用法及代码示例
- Python tf.compat.v1.estimator.DNNLinearCombinedRegressor用法及代码示例
- Python tf.compat.v1.estimator.tpu.TPUEstimator用法及代码示例
- Python tf.compat.v1.estimator.DNNRegressor用法及代码示例
- Python tf.compat.v1.estimator.tpu.experimental.EmbeddingConfigSpec用法及代码示例
- Python tf.compat.v1.estimator.regressor_parse_example_spec用法及代码示例
- Python tf.compat.v1.estimator.DNNLinearCombinedEstimator用法及代码示例
- Python tf.compat.v1.estimator.DNNClassifier用法及代码示例
- Python tf.compat.v1.estimator.Estimator用法及代码示例
- Python tf.compat.v1.estimator.classifier_parse_example_spec用法及代码示例
- Python tf.compat.v1.estimator.DNNLinearCombinedClassifier用法及代码示例
- Python tf.compat.v1.estimator.LinearEstimator用法及代码示例
- Python tf.compat.v1.enable_eager_execution用法及代码示例
- Python tf.compat.v1.executing_eagerly用法及代码示例
- Python tf.compat.v1.executing_eagerly_outside_functions用法及代码示例
- Python tf.compat.v1.enable_v2_tensorshape用法及代码示例
- Python tf.compat.v1.expand_dims用法及代码示例
- Python tf.compat.v1.distributions.Multinomial.stddev用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.compat.v1.estimator.experimental.KMeans。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。