文章目录
前言
在现如今大数据爆发的时代,数据分析软件应运而生,常见的数据分析软件有MATLAB、Python、SPSS、Minitab和Unscrambler。今天蒋宝藏就带你逐个认识一下这5款软件,并以我们常用的判别分析算法案例来比较这5款软件的优缺点!
小马扎准备好了吗???蒋宝藏课堂又开课啦!!!
一、5种软件介绍
1.1 MATLAB
MATLAB是美国MathWorks公司出品的跨平台商业数学软件,有Windows、MacOS、Linux版本,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。每年更新两个版本,上半年为a,下半年为b。
MATLAB是matrix&laboratory两个词的组合,意为矩阵实验室,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案。
它的基本单位是矩阵,几乎可以完成一切工程上的问题,但是需要用户有一定的编程基础,而且不开源。
1.2 Python
与MATLAB一样,Python也是一种跨平台的计算机程序设计语言。Python是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
Python一个很大的优势是开源,用户可以通过python实现很多人无法实现的功能。Python可以用于Web开发、科学计算和统计、人工智能、教育、桌面界面开发、软件开发、后端开发和网络爬虫等领域。
Python需要用户有扎实的编程基础,且由于是解释型语言,编译时速度没有C/C++快。
1.2 SPSS
SPSS为IBM公司推出的一系列用于统计学分析运算、数据挖掘、预测分析和决策支持任务的软件,有Windows和MacOS版本,应用于自然科学、技术科学、社会科学的各个领域。
SPSS的一个很重要的特点是操作界面友好,输出结果美观漂亮。用户不需要掌握编程知识,只要掌握一定的Windows操作技能,精通统计分析原理,就可以很轻松的入门操作这款软件。
SPSS的底层是由JAVA书写的,运行速度要比python快一些,但是不开源。
1.4 Minitab
与上述软件不同的是,Minitab除了数据分析功能,更是一款现代质量管理控制统计软件,是为质量改善、教育和研究应用领域提供统计软件、试验设计和服务的先导。
Minitab具有丰富的数据类算法,同时带有DOE(试验设计)功能,用户不需要编程知识也能熟练的玩转Minitab。
1.4 Unscrambler
Unscrambler 是一款在多变量分析(multivariate analysis, MVA)和实验设计软体领域深耕30多年的标竿专业分析软件,是全球数据分析和统计专业,研究人员和工程师的首选分析工具,可以利用软件多变量分析的强大功能,快速、轻松、准确地分析巨量和复杂的数据。
近30年来,Unscrambler为许多行业和组织提供支持,通过更深入的数据洞察,提高产品开发效率、加强对流程的理解和更好的产品质量控制。
Unscrambler不需要用户有专业的编程基础,只需会基础的数据算法基础就可以入门。与Minitab相同,Unscrambler配套的Design Export是专业的质量控制软件,为很多企业提供了质量管理技术。
Unscrambler开放了现在市面上大部分的数据接口,支持txt、excel、csv、mat等数据格式。最新版本的Unscrambler11开放了python接口,使得原来不支持的机器学习算法可以借助python来实现。
二、判别分析算法案例——5种软件的具体操作
为了更好的比较5种软件的区别,我们用以下这个经典分类案例
蠓的分类:
两种蠓虫AF和APF已由有关专家根据它们的触角长度和翅膀长加以区分,现有15只类型已知的蠓的标本,其中6只是AF蠓,9只是APF蠓,测得他们的触角长度和翅膀长数据如下:
另有3只类型未知的蠓的标本,触角长度和翅膀长度分别为: (1.24, 1.80), (1.28, 1.84), (1.40, 2.04)。
建立一种判别方法,能够根据这两种蠓的触角长度和翅膀长度,判别它们的种类。
这是一个典型的判别分析案例,下面我们分别用5种软件来实现这个案例。
2.1 MATLAB操作
在MATLAB中,解决这个问题,可以自己根据算法原理编程求解,也可用自带的判别分类函数classify来解决,在此我们用classify函数。
Classify函数的调用格式为:
[class,err] = classify(sample,training,group,type)
其中,sample为未知待分类的样本矩阵,training为已知分类的样本矩阵,它们有相同的列数,group为类别列向量,type为分类方法,缺省值linear(线性分类),还可以取quadratic(平方分类)、mahalanobis(马氏距离分类)。返回值class为样本的分类,err为分类误判率的值。
我们在MATLAB编辑器中输入以下代码:
clc
clear
training = xlsread('meng.xlsx','B2:C16');% 已知分类的矩阵
sample = xlsread('meng.xlsx','B17:C19'); %未知分类矩阵
group = [ones(6,