理解维度:
我们把X中的x可以叫做是一个特征,也可以叫做影响结果的因素,也可以叫做一个维度,每增加一个特征就是增加了一个维度
音乐分类案例
有十种类别的音乐,每种类别下有一百首歌,所以我们一共有1000个特征
怎么把这些音乐转换为特征呢?
方法一:我们把音乐根据强度转换成频谱图,如下图
如果我们每个音乐都转成频谱图,这样我们就把问题变成里更复杂的图像识别,所以我们不用这种方法
我们用傅里叶变换
傅里叶变换
傅立叶变换就是把上图中左边的时间轴的sine wave(波浪线)变成右边频率轴的一条竖线,大小就是波峰到波谷的高度
把一首歌变成频率的表达,下图更好理解
代码实现傅立叶变换,顺便准备音乐分类的数据:
# 准备音乐数据
def create_fft(g, n):
# zfill() z代表zero,也就是用0填充
rad = "/home/kiosk/Downloads/MLearning/音乐/" + g + "." + str(n).zfill(5) + ".au.wav"
# wavfile读取wav类型的音乐文件
# sample_rate是采样率,采样率越高,说明你采样的点越多,说明你的信息损失的越少,采样率和我们这次案例没有关系
# X就是音乐文件
sample_rate, X = wavfile.read(rad)
# 傅立叶变换
# fft()是快速傅里叶变换,变换之后取前1000hz个像素点,然后取绝对值,最终生成1000个特征
fft_features = abs(fft(X)[