在Scikitlearn中设置局部线性嵌入(LLE)方法的参数进行维数导出

2024-06-16 11:06:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Scikit learn中的局部线性嵌入(LLE)方法进行降维。我能找到的唯一示例属于Scikit学习文档here和{a2},但我不确定应该如何选择方法的参数。特别是,数据点的维数或样本数与邻域数(n_neighbors)和分量数(n_components)之间有没有关系?Scikit learn中的所有示例都使用n_components=2,总是这样吗?最后,是否还有其他参数需要优化,或者我应该对其余参数使用默认设置?在


Tags: 数据方法文档a2示例参数herecomponents
2条回答

Is there any relation between the dimension of data points or the number of samples and the number of neighbors (n_neighbors) and number of components (n_components)?

一般来说,没有关系。n_neighbors通常由样本之间的距离决定。尤其是,如果您知道样本的类,那么最好将n_neighbors设置为比每个类中的样本数稍大一点。而n_components,即降维大小,是由原始维中数据的冗余度决定的。根据具体的数据分布和您自己的需求,您可以选择合适的空间维度进行投影。在

n_components=2是将原始高维空间映射到二维空间。实际上,这是一个特例。在

Is there any other parameter that is critical to tune, or I should use the default setting for the rest of parameters?

这里还有几个你应该注意的参数。在

  • reg用于权重正则化,它在the original LLE paper中没有使用。如果你不想使用它,只需将它设置为零。但是,reg的默认值是1e-3,这个值非常小。在
  • eigen_solver。如果您的数据量很小,建议使用dense以保证准确性。你可以做更多的研究。在
  • max_itermax_iter的默认值只有100,,这通常会导致结果不收敛。如果结果不稳定,请选择较大的整数。在

您可以使用GridSearch(Scikit learn)为您选择最佳值。在

相关问题 更多 >