ValueError(u "Invalid mode, expected 'c' or 'fortran', got fx00ox00rx00t" ,)



我正在尝试在Python中导入sklearn.neighbors,然后从那里导入KNeighborsClassifier。当我尝试在Python中执行它时,我得到一个ValueError

ValueError(u"Invalid mode, expected 'c' or 'fortran', got fx00ox00rx00t",) in <module 'threading' from '/home/sjain55/anaconda/lib/python2.7/threading.pyc'> ignored' .

代码的一点要点:

from sklearn.neighbors import KNeighborsClassifier
neigh = KNeighborsClassifier(n_neighbors=10)
selected_features = X[:, idx[0:num_fea]]
neigh.fit(selected_features[train], y[train]) //this is the line giving me the above error.

我尝试过搜索,但无法找到收到此类错误的原因。有人知道为什么我会收到此错误吗?

详细打印的数据

S1 : 18863

s : 11062

检查2

我被召唤了 2464 个参数:

(1440, 1(

检查

ck1

{'fisher_score': true, 'y': array([ 1, 1, 1, ..., 20, 20, 20], dtype=uint8(, 'neighbor_mode': 'supervised'}

/

home/sjain55/Desktop/FS_Package_DMML-master/FS_package/function/similarity_based/fisher_score.py:47:运行时警告:除以零在除法中遇到 分数 = 1.0/lap_score - 1

异常值错误: 值错误(u"无效模式,预期的'c'或'fortran',得到f\x00o\x00r\x00t",( 被忽略

我想

我想我解决了你的问题,sklearn在某些模型中强加了数据按称为Fortran/C order的特定顺序排列的问题,只需将order='F'order='C'添加到您的trainX中,并以这种方式trainY数据:

selected_features[train] = numpy.array(selected_features[train],order='F')
y[train] = numpy.array(y[train],order='F')

注意:

顺序

参数 指定数组的顺序。如果顺序为"C",则数组将按 C 连续顺序排列(最后一个索引变化最快(。如果顺序为"F",则返回的数组将采用Fortran连续顺序(第一个索引变化最快(。如果顺序为"A",则返回的数组可以是任意顺序(C-、Fortran-contiguous,甚至是不连续的(。

你的问题是你的字符串默认用utf8编码,你正在调用一些期待ASCII字符串的东西。字符串fx00ox00rx00t是字符串文本u"fortran"的前 7 个字节,如果文件编码设置为 utf8,则为 python 3 或 2 中的默认字符串编码。

"fortran"更改为r"fortran"以传递原始 ASCII 字符串而不是 utf 字符串。如果r"fortran"仍然为您提供宽字符,则可以使用 str("fortran") 强制使用旧的 (ASCII( 字符串。

相关内容

  • 没有找到相关文章

最新更新