我正在使用 Scikit-Learn NMF 算法,我想知道是否有任何方法可以在算法中使用负值,我需要它来处理 BVH 文件。
我正在使用 python 3.7.5
import numpy as np
import re
from sklearn.decomposition import NMF
with open('01_01.bvh', 'r') as fr:
with open('01_01_NMF.bvh', 'w') as fw:
for line in fr.readlines():
if line[0].isdigit() or line[1].isdigit():
line = re.split('\s+|\n', line)
line.pop()
MOTION = [float(nums) for nums in line]
X = MOTION
print("Original")
print(X)
model = NMF(n_components=96, init='random', random_state=0)
W = model.fit_transform(X)
H = model.components_
print("NMF")
print(W)
OutputMotion = [str(nums) for nums in W]
out = ' '.join(OutputMotion)
fw.write(out + '\n')
else:
fw.write(line)
代码已经逐行读取 bvh 文件并验证它是否在 Motion 部分中,该部分是必须通过 NMF 的部分,但它通常具有许多负值并且算法会拒绝它们。欢迎任何帮助,谢谢。