跳过正文
  1. Posts/

k-means clustering 学习笔记

·1 分钟

其实这算法巨简单。。。。让我想到了均分纸牌(noip200?

还是大致说一下:

对于有 features 但是 **没有 **labels 的数据,没办法用监督学习,但是可以使用非监督学习的聚类算法。

所谓聚类,简单理解,就是把相似的分成一组。。。

k-means就是一个常见的聚类算法。。。

k代表可以把数据分成k组。

举一个平面上二维点的例子,算法步骤如下:

  1. 随机k个点当做k个点作为k组的中心。
  2. 根据现在的k个中心,将数据集中的点,按照【距离哪个中心最近就属于哪个中心】的原则,分组。
  3. 在每一个组内求点的二维平均数,作为新的中心。**如果存在一个组的数据中心改变,那么返回2,否则结束**。![](http://stanford.edu/~cpiech/cs221/img/kmeansViz.png)

可以很容易推广到高维度,就只是求平均数和算距离的时候有区别。

一般化的流程:

然后该算法是Expectation Maximization的一个特例

该算法和KNN算法没有半毛钱关系。。。

参考资料:

k means 维基百科

CS221-kmeans

相关文章

TensorFlow Architecture 学习笔记(二)Adding a New Op

·6 分钟
Adding a New Op # * [目录](https://www.tensorflow.org/extend/adding_an_op#top_of_page) * [定义运算的接口](https://www.tensorflow.org/extend/adding_an_op#define_the_ops_interface) * [实现运算的核心部分(kernels)](https://www.tensorflow.org/extend/adding_an_op#implement_the_kernel_for_the_op) * [多线程cpu kernels](https://www.tensorflow.org/extend/adding_an_op#multi-threaded_cpu_kernels) * [GPU kernels](https://www.tensorflow.org/extend/adding_an_op#gpu_kernels) * [构建运算库](https://www.tensorflow.org/extend/adding_an_op#build_the_op_library) * [用系统编译器编译你的运算(TensorFlow binary installation)](https://www.tensorflow.org/extend/adding_an_op#compile_the_op_using_your_system_compiler_tensorflow_binary_installation) * [使用bazel编译你的运算(TensorFlow source installation)](https://www.tensorflow.org/extend/adding_an_op#compile_the_op_using_bazel_tensorflow_source_installation) * [在 Python 中使用你的运算](https://www.tensorflow.org/extend/adding_an_op#use_the_op_in_python) * [验证你添加的运算可以工作](https://www.tensorflow.org/extend/adding_an_op#verify_that_the_op_works) * [在你的运算中添加高级特性](https://www.tensorflow.org/extend/adding_an_op#building_advanced_features_into_your_op) * [条件检查和验证](https://www.tensorflow.org/extend/adding_an_op#conditional_checks_and_validation) * [Op registration](https://www.tensorflow.org/extend/adding_an_op#op_registration) * [GPU Support](https://www.tensorflow.org/extend/adding_an_op#gpu_support) * [用python 实现梯度](https://www.tensorflow.org/extend/adding_an_op#implement_the_gradient_in_python) * [Shape functions in C++](https://www.tensorflow.org/extend/adding_an_op#shape_functions_in_c) 对于要添加原生tensorflow中没有定义的运算的需求,首先建议在python层面,能不能将需要的op用其他原生的op拼凑起来。

stanford cs 231n:常用激活函数

·6 分钟
其实我觉得这部分可以直接黑箱。。。直接无脑上Leaky ReLU或者Maxou?不过对这些激活函数的特点有个high-level的了解应该总是没坏处的,只要别太纠结细节就好了把。。 # 每个激活函数(或非线性函数)的输入都是一个数字,然后对其进行某种固定的数学操作。下面是在实践中可能遇到的几种激活函数: