跳到主要内容

使用FastICA进行数据源分离

使用FastICA进行数据源分离
**项目ID:4645
https://scikit-learn.org/stable/auto_examples/decomposition/plot_ica_blind_source_separation.html#sphx-glr-auto-examples-decomposition-plot-ica-blind-source-separation-py 项目总览:45.png 项目分为三个部分:
第一部分,数据生成,生成用于分离的数据源
第二部分,进行PCA以及ICA分析
第三部分,分析结果,绘图

  • 结果分析节点代码
import os

import matplotlib.pyplot as plt

import suanpan
from arguments import SklearnModel
from suanpan.app import app
from suanpan.app.arguments import Csv, Folder, Npy

TMP_FOLDER = "/tmp/result"

@app.input(Csv(key="inputData1", alias="icaData"))
@app.input(Csv(key="inputData2", alias="pcaData"))
@app.input(Csv(key="inputData3", alias="X"))
@app.input(Npy(key="inputData4", alias="S"))
@app.output(Folder(key="outputData1"))
def Demo(context):
args = context.args

if not os.path.exists(TMP_FOLDER):
os.makedirs(TMP_FOLDER)

S_ = args.icaData.values
H = args.pcaData.values
X = args.X.values
S = args.S
imageFile = args.outputData1

plt.figure(figsize=(14.4, 9.6))
models = [X, S, S_, H]

names = [
"Observations (mixed signal)",
"True Sources",
"ICA recovered signals",
"PCA recovered signals",
]
colors = ["red", "steelblue", "orange"]
for ii, (model, name) in enumerate(zip(models, names), 1):
plt.subplot(4, 1, ii)
plt.title(name)
for sig, color in zip(model.T, colors):
plt.plot(sig, color=color)

plt.subplots_adjust(0.09, 0.04, 0.94, 0.94, 0.26, 0.46)
plt.savefig(os.path.join(TMP_FOLDER, "demo.png"), format="png")

return TMP_FOLDER


if __name__ == "__main__":
suanpan.run(app)