1. KNN
    1. 算法
      1. 将空间中某个点分类到最相邻的K个点里类别最多的那个标签
    2. opencv3用法
      1. knn = cv2.ml.KNearest_create()
      2. knn.train(trainData,cv2.ml.ROW_SAMPLE,reponses)
      3. ret,result,neighbours ,dist = knn.findNearest(newcomer,k)
        1. result:数据newcomer被分配的标签
        2. neighbours: 与newcomer最临近的k个邻居的标签
        3. dist: k个邻居与newcomer的距离
      4. cv46_knn_ocr.py
  2. SVM
    1. 算法
      1. 将低维空间的数据用核函数映射到高维
      2. 参数C的选择
        1. 如果 C 的取值比较大,错误分类会减少,但是边缘也会减小。 其实就是错误分类的代价比较高,惩罚比较大
        2. 如果 C 的取值比较小,边缘会比较大,但错误分类的数量会升高。 其实就是错误分类的代价比较低,惩罚很小
    2. SVM+HOG识别手写字
      1. cv47_svm_ocr.py
  3. kmeans
    1. opencv用法
      1. cv2.kmeans(samples, nclusters, criteria, attempts, flags)
        1. samples
          1. np.float32 类型的数据,每个特征应该放在一列
        2. nclusters
          1. 聚类的最终数目
        3. criteria
          1. 终止迭代的条件
        4. attempts
          1. 使用不同的起始标记来执行算法的次数
        5. flags
          1. 用来设置如何选择起始重心
    2. 图像处理中使用
      1. 颜色量化
        1. 减少图片中的颜色呢,为了减少内存消耗
        2. cv48_kmeans.py