我需要测试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.删除该行(或相应地对其进行操作),并且您的代码应正常工作。