使用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
项目总览:
项目分为三个部分:
第一部分,数据生成,生成用于分离的数据源
第二部分,进行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)