机器学习经典算法之(二十四) 独立成分分析法

        (一)独立成分分析简介:        ICA是20世纪90年代提出的,起初是神经网络的研究中有一个重要的问题,独立成分分析是一个解决问题的新方法。Ica(独立成分分析法)又称盲源分离(Blind source separation, BSS),它假设观察到的随机信号x服从非高斯分布模型,其中s为未知源信号,其分量相互独立,A为一未知混合矩阵。ICA的目的是通过且仅通过观察x来估计...
摘要由CSDN通过智能技术生成

        (一)独立成分分析简介:

        ICA是20世纪90年代提出的,起初是神经网络的研究中有一个重要的问题,独立成分分析是一个解决问题的新方法。Ica(独立成分分析法)又称盲源分离(Blind source separation, BSS),它假设观察到的随机信号x服从非高斯分布模型,其中s为未知源信号,其分量相互独立,A为一未知混合矩阵。ICA的目的是通过且仅通过观察x来估计混合矩阵A以及源信号s。大多数ICA的算法需要进行“数据预处理”(data preprocessing):先用PCA得到y,再把y的各个分量标准化(即让各分量除以自身的标准差)得到z。预处理后得到的z各个分量不相关且方差为1。

        (二)典型应用场合:

        考虑到源信号是相互独立的,由某些物体或源发出的一组混好信号,这些源可能包括:发出电信号的不同脑区;在一个房间说话的几个人,发出语音信号;发出雷达信号的移动电话,等等.进一步假设有几个传感器或接收器,这些传感器放置在不同的位置上,这样,每个传感器记录的是源信号带有不同权重的混合.经典的鸡尾酒会问题就符合这样的情况。

ICA的实现步骤大家可以参考其他相关文献,以后有时间补充。

        (三)ICA实现代码(源码地址:https://www.github.com/LiangjunFeng)

#!/usr/bin/envpython3

# -*-coding:utf-8-*-

# Author :LiangjunFeng

# File   : FastICA.py

# Date   : 2017/10/15 6:25

# Version: 0.1

# Description:fastICA algorithm ,split voice signals

import wave

import os

import numpy asnp

import math

importmatplotlib.pyplot as plt

from numpyimport random

from sklearnimport preprocessing

import scipy

import scipy.ioas sio

 

defLoadSoundSet(path):

    filename= os.listdir(path)

    data = []

    for i in range(len(filename)):

        f = wave.open(path+filename[i],'rb')

        params = f.getparams()

        nchannels, sampwidth, framerate,nframes = params[:4]

        strData = f.readframes(nframes)

        waveData =np.fromstring(strData,dtype=np.int16)

        waveData = waveData*1.0/(max(abs(waveData)))

        data += waveData.tolist()

    time =np.arange(0,nframes*len(filename))*(1.0 / framerate)

    return time.tolist(),data

 

defLoadSound(path):

    f = wave.open(path,'rb')

    params = f.getparams()

    nchannels, sampwidth, framerate, nframes =params[:4]

    strData = f.readframes(nframes)               #read the wav file

    waveData =np.fromstring(strData,dtype=np.int

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值