数据挖掘大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.音乐分类的数据集
在这个题目中,使用了SVM分类器和贝叶斯分类器,并通过sklearn库中的GridSearchCV方法对SVM分类模型的参数进行调优,使最终的正确率提高了5个百分点左右。但仍没有文档中的论文达到的分类正确率高,因为论文中的分类器的设计使专一对音乐音调分类的,其中设计到神经网络和深度学习的一些方法。而我使用的分类器使对大部分分类问题都有效的方法。下面是对数据集的一个简单的介绍:
数据标签
第3-14列:YES or NO
第15列:共16个取值('D', 'G#', 'D#', 'Bb', 'Db', 'F#', 'Eb', 'F', 'C#', 'Ab', 'B', 'C', 'A#', 'A', 'G', 'E')
第16列:共5个取值(1,2,3,4,5)
第17列:共102个类别('C#M', 'F_m', 'D_m', 'D_d7', 'G#m', 'D_m6', 'C_m6', 'C_d7', 'F_M', 'D_M', 'BbM7', 'F#d', 'C#d', 'E_d', 'F_d7', 'F#d7', 'G_m', 'C#d7', 'AbM', 'EbM', 'D#d', 'Bbm6', 'G_M7', 'F#m6', 'Dbd', 'B_m6', 'G#M', 'D_m7', 'B_M', 'F#M7', 'Bbm', 'A#d', 'D#d7', 'Abd', 'G_M', 'F#M4', 'E_M', 'A_M4', 'E_m7', 'D#M', 'C_M7', 'A_m6', 'Dbm', 'A#d7', 'F#M', 'C#m7', 'F_m7', 'C_M', 'C#M4', 'F_M6', 'A_M', 'G_m6', 'D_M4', 'F_M7', 'B_M7', 'E_M4', 'E_m6', 'A_m4', 'G#d', 'C_m7', 'C_M6', 'Abm', 'F_m6', 'G_m7', 'F_d', 'Bbd', 'G_M4', 'B_d', 'A_M7', 'E_m', 'C#M7', 'DbM', 'EbM7', 'C#d6', 'F#m', 'G_M6', 'G_d', 'Dbd7', 'B_m7', 'DbM7', 'D_M6', 'D#d6', 'G#d7', 'A_m7', 'B_d7', 'B_M4', 'A_d', 'A_m', 'C_d6', 'D#m', 'C_M4', 'A_M6', 'BbM', 'C#m', 'D_M7', 'E_M7', 'F_M4', 'F#m7', 'Dbm7', 'B_m', 'C_m', 'Ebd')
这是一个多分类问题
1.1数据读取与训练集和测试集分离
从文件读取数据
使用sklearn.model_selection库中的train_test_split函数,将训练集随机分成10份,9份训练,1份测试
X是标签列表,y是类别列表
1.2使用svm分类
参数调优
模型训练与正确率
输出结果:
1.3使用贝叶斯分类器
分类结果:
在贝叶斯分类器中,使用了伯努利模型对概率。下图是输出结果:
其中中用到的gettime装饰器
1.4总结
数据集中提到的论文所实现的方法的正确率达到80.06%,它所设计的方法是专门用来对音乐音调进行分类的,其中涉及到了Viterbi方法等。我所采用的是普通的SVM分类器和贝叶斯分类器,这些分类器对大部分分类问题都有一个较客观的正确率。
2.银行用户是否有顶起存款的预测
在这个分类题目中仍然运用了SVM分类器和贝叶斯分类器,并对数据进行了可视化操作。因此在这一小节主要介绍数据的可视化。下面是对数据集的一个简单的介绍:
标签
年龄,工作,婚姻,教育,信用卡,余额,房子,贷款,联系方式,日,月,持续时间age,job,marital,education,default,balance,housing,loan,contact,day,mo nth,duration,campaign,pdays,previous,poutcome
类标签
是否订购定期存款
这是一个典型的二分类问题,主要通过银行客户的各种信息,其实现的意义在于可以通过银行已掌握的客户的基本信息,对客户是否有意向订购顶起存款进行预测,从众多客户中提取有价值的客户。
2.1数据读取
从文件读取数据
同样使用sklearn.model_selection库中的train_test_split函数将数据分为训练集和测试集。
2.2数据可视化
通过matplotlib库进行数据可视化,将每个标签在每个类别中的数量以直方图的形式画出来。
图(2.1)两个类别各占的比例图(2.2)年龄分布
图(2.3)工作分布
图(2.4)所受教育水平
图(2.5)主要联系方式
图(2.6)婚姻分布
从图(2.1)可以看出所有客户中只有十分之一预定了定期存款,可见开通这个业务的是一小部分人。从图(2.2)可以看出35左右的客户有大部分。从图(2.3)可以看出,所有职业中学生更倾向预定这项业务。从图(2.5)可以看到使用移动电话的客户更倾向预定这项业务。
2.3分类结果
贝叶斯分类器建立模型时间较短且有一个较好的正确率。
SVM分类器花费时间较长,相对于贝叶斯分类器的正确率并没有明显的提高。为什么会出现这种情况,本人感觉是数据集的标签过多引起的。由于对SVM的具体实现了解不深,具体的原因有待进一步探索。
3.特定人语音识别
这个数据集分为训练集和测试集,主要任务是区分9个不同成年男性对/ae/字母的发音。数据集中有每个人多次对这一字母的发音,每次发音的数据集是由递增顺序的12个LPC系数组成(即每个时间点有12个值)。即每次发音的数据会被分为多行(7-29),每行有12个数组成。
对于这个问题,根据论文中的方法实现了一个算法(Method T-B),
3.1数据读取