常见机器学习算法例程分析(毕设笔记6)

常见机器学习算法例程分析(毕设笔记6)

年后有两门课要考试,再加上摸摸鱼。。就到现在了。

这次打算从毕业设计会用到的几个简单的开源库开始分析,最后分析opencv的。

libsvm

目标算法:SVM
使用到开源库自带的例程svm-train,使用的数据是package中自带的心率数据(heart_scale).
数据集特征:271个数据点,标签为正负1,数据维度为13维
训练方式:./svm-train heart_scale

优势:具有较多备选数据集https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/,数据集格式统一,支持多形式的svm算法(LIBSVM is an integrated software for support vector classification, (C-SVC, nu-SVC), regression (epsilon-SVR, nu-SVR) and distribution estimation (one-class SVM). It supports multi-class classification. ),基于C语言实现,便于插桩分析。

Armadillo

目标算法:kmeans,PCA
这是一个开源的C++库,提供线性代数和科学计算方面的帮助。
PCA算法:(需要使用给定的库和函数进行简单编程)

#include 
#include 
using namespace std;
using namespace arma;

int main(int argc, char** argv)
  {
  mat A(5, 4, fill::randu);
  mat coeff;
  mat score;
  vec latent;
  vec tsquared;
  princomp(coeff, score, latent, tsquared, A);

  cout<

上述代码就是对一个5*4矩阵填充随机数后进行主成分分析的实例。

kmeans算法:

#include 
#include 
using namespace std;
using namespace arma;

int main(int argc, char** argv)
  {
	uword d = 5;       // dimensionality
	uword N = 10000;   // number of vectors

	mat data(d, N, fill::randu);

	mat means;

	bool status = kmeans(means, data, 2, random_subset, 10, true);

	if(status == false)
 	 {
  	cout << "clustering failed" << endl;
	  }

	means.print("means:");
	return 0;
  }

上述代码就是生成一个数据量为10000,维度为5的随机向量数据集,然后进行kmeans聚类的过程。

优势:只提供C++库函数实现,数据集选择灵活。

Tiny-DNN

目标算法:小型神经网络

1.基于MNIST数据集的数字识别,使用MNIST数据库进行类LeNet-5卷积神经网络的训练
2.基于CIFAR-10数据集的目标分类(训练生成的神经网络较大,作为备选项)

opencv

1.kmeans
https://github.com/opencv/opencv/blob/master/samples/cpp/kmeans.cpp,数据随机生成。
2.logistic回归
https://github.com/opencv/opencv/blob/master/samples/cpp/logistic_regression.cpp,使用节选的Iris数据集
3.PCA
https://github.com/opencv/opencv/blob/master/samples/cpp/pca.cpp,对给定的图片进行主成分分析
4.可选多种算法的点分类
https://github.com/opencv/opencv/blob/master/samples/cpp/points_classifier.cpp,由运行程序者自行设定具有0,1标记的点,随后程序使用平凡贝叶斯分类器,knn,SVM,决策树,ADA boost算法,随机森林,人工神经网络,最大期望值算法进行点分类并输出图形化训练结果。
5.可选多种算法的字母识别
https://github.com/opencv/opencv/blob/master/samples/cpp/letter_recog.cpp,使用的数据集是来自UCI仓库的字母识别数据集(letter-recognition.data),可选算法有随机森林,提升方法(boosting classifier),多层感知机,knn,SVM等。

你可能感兴趣的:(毕业设计笔记,机器学习)