如何将蛋白质能量数据从文本文件到MATLAB进行Scikit-Feature算法



我需要测试Scikit-feature的一些算法,我想使用文本文件中的一些数据集,例如:link

我只知道算法用作输入的MATLAB文件是这样形成的:类是" y"阵列中的类,并且在'x'数组中的数据,这里有一些代码,可以显示它们如何<它们> OPEN 并从.mat文件获取数据:

这是算法代码

#test_CFS.Py
mat = scipy.io.loadmat('../data/colon.mat')
X = mat['X']    # data
X = X.astype(float)
y = mat['Y']    # label
y = y[:, 0]
n_samples, n_features = X.shape

我试图制作一个代码来从.txt中的数据生成垫子文件,并且它是由我使用的算法(test_cfs.py)成功处理的,它没有显示出测试文件i的任何错误仅与9列和8行一起使用。

这是我从.txt

制作.mat文件的代码
#textToMat.py
import numpy as np
import scipy.io as sio
file = open("matrix.txt", "r")
data = file.readlines()
Y = []
subY = []
X = []
subX = []
print len(data)
print len(data[0].split())
for i in range(len(data)):
    values = data[i].split()
    subY.append(np.array(float(values[0]),dtype=float))
    Y.append(np.array(subY))
    subY = []
    for j in range(1, len(values)):
        subX.append(np.array(float(values[j]), dtype=float))
    X.append(subX)
    subX = []
npY = np.array(Y, dtype=float)
npX = np.array(X, dtype=float)
sio.savemat('matrix.mat', {'Y':npY,'X':npX})

但是,当我尝试使用大垫子文件运行算法时,我会生成它。

Traceback (most recent call last):
  File "test_CFS.py", line 47, in <module>
    main()
  File "test_CFS.py", line 12, in main
    X = X.astype(float)
ValueError: setting an array element with a sequence.

YOY可能会问为什么我将一个数据附加到另一个数组的数组,这是因为当我从Scikit-Feature的垫子文件中打印数据时,它会返回我:

{'Y': array([[-1],
       [ 1],
       [-1],
       [ 1],
       [-1],
       [ 1],
       [-1],
       [ 1],
       [-1],
       [ 1],
       [-1],
       [ 1],
       [-1],
       [ 1],
       [-1],
       [ 1],
       [-1],
       [ 1],
       [-1],
       [ 1],
       [-1],
       [ 1],
       [-1],
       [ 1],
       [-1],
       [-1],
       [-1],
       [-1],
       [-1],
       [-1],
       [-1],
       [-1],
       [-1],
       [-1],
       [-1],
       [-1],
       [-1],
       [-1],
       [ 1],
       [-1],
       [-1],
       [ 1],
       [ 1],
       [-1],
       [-1],
       [-1],
       [-1],
       [ 1],
       [-1],
       [ 1],
       [ 1],
       [-1],
       [-1],
       [ 1],
       [ 1],
       [-1],
       [-1],
       [-1],
       [-1],
       [ 1],
       [-1],
       [ 1]], dtype=int16), 'X': array([[ 2,  0,  0, ...,  0,  2, -2],
       [ 2,  2,  0, ...,  2,  0, -2],
       [-2,  2,  2, ..., -2, -2, -2],
       ..., 
       [ 0, -2, -2, ...,  0,  2, -2],
       [ 0,  0, -2, ...,  0, -2, -2],
       [ 0, -2, -2, ...,  0,  0,  0]], dtype=int16), '__version__': '1.0', '__header__': 'MATLAB 5.0 MAT-file, Platform: PCWIN64, Created on: Wed Mar 25 15:17:35 2015', '__globals__': []}

在我的情况下,我正在使用浮点值。

您的数据是错误的。对于Numpy转换,所有行都必须具有相同的长度。您提供的所有行中的所有行都有643个条目,除行232 外,它具有644.删除该行(或相应地对其进行操作),并且您的代码应正常工作。

最新更新