音乐分类

代码:

 1 import numpy as np
 2 from scipy import fft
 3 from scipy.io import wavfile
 4 from sklearn.linear_model import LogisticRegression
 5 import random
 6 """
 7     使用logistic regression处理音乐数据,音乐数据训练样本的获得是使用快速傅里叶变换:
 8     1.吧训练集扩大到每类100首歌二部之前的10首歌
 9     2.同时使用logistic回归和KNN作为分类器
10     3.引入一些评价标准来比较logictic和KNN在测试集上的表现
11 """
12 """
13 n = 40
14 # hstack数据拼接
15 # 在模拟X的时候使用了两个正态分布,分别制定各自的均值,方差,生成40个点
16 X = np.hstack((norm.rvs(loc=2, size=n, scale=2), norm.rvs(loc=8, size=n, scale=3)))
17 # zeros使得数据点生成40个0,ones使得数据点生成40个1
18 y = np.hstack((np.zeros(n), np.ones(n)))
19 
20 """
21 general_list = ["classical", "jazz", "country", "pop", "rock", "metal"]
22 """
23 # 处理原始数据,转化为特征文件
24 def create_fft(g, n):
25     read = "d:/xxx/"+g+"/conberted/"+g+"."+str(n).zfill(5)+".au.wav"
26     sample_rate, x = wavfile.read(read)
27     fft_features = abs(fft(x)[:1000])
28     sad = "d:/trainset/"+g+"."+str(n).zfill(5)+".fft"
29     np.save(sad, fft_features)
30 
31 
32 for g in gener_list:
33     for n in range(100):
34         create_fft(g, n)
35 """
36 # 加载训练集数据,分割训练集和测试集,进行分类器的训练
37 # 构造训练集
38 x = []
39 y = []
40 for g in general_list:
41     for n in range(100):
42         read = "D:/AnalyseData学习资源库/人工智能开发【中】/05_分类器项目案例和神经网络算法【尚学堂·百战程序员】/资料/trainset/"+g+"."+str(n).zfill(5)+".fft"+".npy"
43         fft_features = np.load(read)
44         x.append(fft_features)
45         y.append(general_list.index(g))
46 
47 x = np.array(x)
48 y = np.array(y)
49 
50 # 拆分数据为训练集和测试集
51 randomIndex = random.sample(range(len(y)), int(len(y)*8/10))
52 trainX = []
53 trainY = []
54 testX = []
55 testY = []
56 
57 for i in range(len(y)):
58     if i in randomIndex:
59         trainX.append(x[i])
60         trainY.append(y[i])
61     else:
62         testX.append(x[i])
63         testY.append(y[i])
64 
65 # 使用sklearn来构建和训练两种分类器
66 
67 # logistic classifier
68 model = LogisticRegression()
69 # train
70 model.fit(trainX, trainY)
71 # test
72 predict = model.predict(testX)
73 print(testY)
74 print("--------------------------------------------------")
75 print(predict)
76 # error
77 import math
78 error = 0.0
79 for i in range(len(testY)):
80     if testY[i] != predict[i]:
81         error = error + 1
82 print(error/len(testY))
83 
84 print("starting read wavfile...")
85 sample_rate, test = wavfile.read("D:/AnalyseData学习资源库/人工智能开发【中】/05_分类器项目案例和神经网络算法【尚学堂·百战程序员】/资料/trainset/sample/heibao-wudizirong-remix.wav")
86 testdata_fft_features = abs(fft(test))[:1000]
87 type_index = model.predict([testdata_fft_features])[0]
88 
89 print("预测音乐分类为:"+general_list[type_index])

结果:

 

转载于:https://www.cnblogs.com/yszd/p/9513833.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282357.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不管对不对,先把闹钟关了再说

小榆提前关闭早上闹钟,几乎工作日的早晨都是被这魔怔的铃声给拉扯醒,无论有多么不愿还是痛苦,可对这闹钟也无可奈何,就算一时果断掐掉接下来是另一回麻烦事。最后一天,已经顾不得多少,没什么令人惧怕的人或…

pycharm(windows)安装及其设置中文菜单

pycharm(windows)安装及其设置中文菜单 1.下载 在官网(http://www.jetbrains.com/pycharm/download/#sectionwindows)进行下载 或者到百度云进行下载 专业版:链接:http://pan.baidu.com/s/1bSSRds 密码&…

Tomcat定义虚拟主机案例

Tomcat定义虚拟主机案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 一.准备环境 1>.创建web程序的根目录 [rootyinzhengjie ~]# mkdir -pv /home/yinzhengjie/data/www/webapps/ROOT mkdir: created direc…

将域名绑定到ip上,并实现访问不同二级子域名对应不同目录

一、将域名绑定到ip上1、环境介绍:阿里云服务器ESC(美国硅谷) 2、购买域名 3、备案 注:由于我买的是美国地区服务器,所以不用备案,如果买的国内服务器,这里需要添加一个备案操作。 4、域名实名认…

ABP vNext微服务架构详细教程(补充篇)——单层模板(中)

框架搭建2聚合服务这里我们将聚合服务命名为Domain.Core和基础服务层一致,我们先通过命令创建单层模板项目Domain.Core,这里我们删除wwwroot、Data、Entities、Localization、ObjectMapping文件夹及其所有子文件,并删除package.json文件和Ser…

谈一谈synchronized关键词

1.使用 java中的每一个对象都可以作为synchronized的锁进行代码同步,常见的形式 同步代码块锁是synchronized括号内的对象普通成员方法上,锁是当前的对象,synchronized(this)静态方法上,锁是当前类的Class对象2. 原理 synchronize…

系统学习redis之二——redis集群搭建

redis单点部署: 安装命令: # cd /usr/local/ # wget http://download.redis.io/releases/redis-4.0.1.tar.gz #下载安装包 # yum -y install gcc psmisc #安装依赖包 # tar xf redis-4.0.1.tar.gz # cd /usr/lo…

业务技术协同线上化的研发管理实战

摘要:2017年1月13日举办的【云栖计算之旅】线下沙龙第4期研发管理专场,阿里巴巴B2B事业群产品专家代平为大家带来了题为业务技术协同线上化的研发管理实战的演讲。本文主要从管理产品研发的理念开始谈起,着重说明了云效指挥部的六大步骤&…

Linux中写脚本,同时去开启我们自己设定的多个服务(含定时脚本实现)

场景介绍: 在Linux中,我们通常开启服务需要使用systemctl start 服务名 命令,这样,如果开启一个服务还好,但是如果同时开启多个服务,难免会感到麻烦,这时,我们可以自定义一个脚本&a…

负载均衡环境搭建实战之nginx和tomcat

Linux基本环境负载均衡的环境需要在linux下搭建完成,所以有一个基础的linux系统是必须的,这里建议大家按照http://edu.51cto.com/course/10209.html中的基础linux环境来安装,这样能少走弯路。JDK安装1、 下载对应版本的Java1.7,a)…

桌面应用如何判断win11操作系统

背景Windows 11 操作系统已经正式发布快有一年了,在 .Net 开发中,我们获取操作系统版本,经常使用 Environment.OSVersion.Version.Major 和 Minor(6.1 Windows 7, 10.0 Windows 10),但是当 Win11 出现以后…

Nginx 网站定义自己的错误页面

场景: 为了给用户较好的交互和感官,我们通常需要对错误页面进行友好提示。 环境介绍: LNMP(linux(centos7.4)Nginx Mysql5.6 php7.0)实现: 这里,我直接对nginx的子配置文…

车辆调度

为什么80%的码农都做不了架构师?>>> 车辆调度系统 大体上分为4个部分吧 1.调度车辆:你调度的时候需要的车辆,方便给你运输啥的 2.调度任务:你为啥会调度车辆,肯定要有一个任务 3.客户:那这个…

Nginx 设置,设置已经解析的域名,在nginx中没有定义相应server时的默认访问

场景介绍: 因为业务需求,我们需要对域名进行解析,这里我对域名进行了如下解析但是,因为业务需求,我可能在nginx中只定义了kuman.xiaobudiu.top 和 www.xiaobudiu.top 的相应server的子配置文件,如图那么问题…

第一次作业--四则运算题目生成程序

功能简介: 1.获取用户所要生成算术的个数 2.随机生成算式和式子的答案 3.生成算式和答案的txt文件来保存算式和答案 思路: 生成里的运算数分为三个部分,整数,如果是分数就再分为分子和分母,然后为这三个部分创建数组&a…

ABP vNext微服务架构详细教程(补充篇)——单层模板(上)订正篇

简介在之前的《ABP vNext微服务架构详细教程》系列中,我们已经构建了完整的微服务架构实例,但是在开发过程中,我们会发现每个基础服务都包含10个类库,这是给予DDD四层架构下ABP的实现方案,但是实际使用中我们会发现&am…

javascript基础修炼(4)——UMD规范的代码推演

javascript基础修炼(4)——UMD规范的代码推演 1. UMD规范 地址:https://github.com/umdjs/umd UMD规范,就是所有规范里长得最丑的那个,没有之一!!!它是为了让模块同时兼容AMD和CommonJs规范而出现的&#x…

Missing artifact log4j:log4j:bundle:1.2.17

为什么80%的码农都做不了架构师?>>> maven引入log4jjar包出现Missing artifact log4j:log4j:bundle:1.2.17,解决方法是去掉bundle,其他的解决方案可以参考maven log4j.jar问题 Maven使用log4j可能会有协议上的问题 如果log4j的版…

PHPStorm 配置远程服务器文件夹在本地windows镜像,实现代码自动同步(类似于Samba架构文件同步功能)

场景介绍: 这是一种类似samba架构,也和 filezillaxshell 模式相类似的代码文件同步的模式,但是却更加优雅,也更加方便简洁。环境介绍: 本地windows端:编辑器phpstorm 远程Linux端:centos&#x…

反向ajax实现

在过去的几年中,web开发已经发生了很大的变化。现如今,我们期望的是能够通过web快速、动态地访问应用。在这一新的文章系列中,我们学习如何使用反 向Ajax(Reverse Ajax)技术来开发事件驱动的web应用,以此来…