音樂分類

代碼:

 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.pswp.cn/news/282357.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282357.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282357.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Problem C: 類的初體驗(III)

Description 定義一個類Data,只有一個double類型的屬性和如下4個方法: 1. 缺省構造函數,將屬性初始化為0,并輸出“Initialize a data 0”。 2. 帶參構造函數,將屬性初始化為指定參數,并輸出“Initialize…

Nginx- 實現跨域訪問

一、什么是跨域 跨域:由于瀏覽器的同源策略,即屬于不同域的頁面之間不能相互訪問各自的頁面內容。詳細見下表: 注:同源策略,單說來就是同協議,同域名,同端口 URL說明是否允許通信http://www.a…

不管對不對,先把鬧鐘關了再說

小榆提前關閉早上鬧鐘,幾乎工作日的早晨都是被這魔怔的鈴聲給拉扯醒,無論有多么不愿還是痛苦,可對這鬧鐘也無可奈何,就算一時果斷掐掉接下來是另一回麻煩事。最后一天,已經顧不得多少,沒什么令人懼怕的人或…

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…

node服務成長之路

我們的系統也從第一代平臺開始到現在第四代平臺更換中,對這四代平臺做一個簡單的介紹: 第一代平臺,主要是集中式,以快速上線為目的;第二代平臺主要是分布式改造,緩解各服務壓力;第三代平臺主要做…

將域名綁定到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…

Android之利用EventBus進行數據傳遞

在項目中,不可避免的要在兩個頁面之間進行數據的傳遞,就算不傳遞,也需要進行刷新之類的,我們根據Google提供的庫類方法,也是可以做的,主要有廣播broadcastreceiver,startactivity方法或者是appl…

負載均衡環境搭建實戰之nginx和tomcat

Linux基本環境負載均衡的環境需要在linux下搭建完成,所以有一個基礎的linux系統是必須的,這里建議大家按照http://edu.51cto.com/course/10209.html中的基礎linux環境來安裝,這樣能少走彎路。JDK安裝1、 下載對應版本的Java1.7,a)…

Java java.lang.SecurityException: Prohibited package name

java.lang.SecurityException: Prohibited package name 提示java錯誤: Exception in thread "main" java.lang.SecurityException: Prohibited package name: java.xxx 問題所在:package java.xx; 定義包時不能以java.的形式定義轉載于:https…

桌面應用如何判斷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的子配置文…

Python中的變量

1、聲明變量: 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 namewupeiqi 上述代碼聲明了一個變量,變量名為:name,變量name的值為“wupeiqi” 變量的作用: 為了方便操作,需要把這些數據分別用一個簡…

車輛調度

為什么80%的碼農都做不了架構師?>>> 車輛調度系統 大體上分為4個部分吧 1.調度車輛:你調度的時候需要的車輛,方便給你運輸啥的 2.調度任務:你為啥會調度車輛,肯定要有一個任務 3.客戶:那這個…

threeJS 實用

texture可以是圖片和canvas,并且最終是作為material的map屬性來渲染。texture的構造函數中有一個參數image(圖片,canvas),使用圖片的時候需要使用imageLoader加載到圖片產生一個image對象,然后設置成為text…