我尝试使用从nolearn包导入的DBN函数,这是我的代码:
from nolearn.dbn import DBN
import numpy as np
from sklearn import cross_validation
fileName = 'data.csv'
fileName_1 = 'label.csv'
data = np.genfromtxt(fileName, dtype=float, delimiter = ',')
label = np.genfromtxt(fileName_1, dtype=int, delimiter = ',')
clf = DBN(
[data, 300, 10],
learn_rates=0.3,
learn_rate_decays=0.9,
epochs=10,
verbose=1,
)
clf.fit(data,label)
score = cross_validation.cross_val_score(clf, data, label,scoring='f1', cv=10)
print score
由于我的数据具有形状(1231,229)和带有形状(1231,13)的标签,因此标签集看起来像([0 0 1 0 1 0 1 0 0 0 1 1 0] ...,[.. ..]),当我运行我的代码时,我得到了这个错误信息:输入形状不好(1231,13) . 我想知道这里可能发生两个问题:
-
DBN不支持多标签分类
-
我的标签不适合用于DBN适配功能 .
2 回答
正如Francisco Vargas所述,
nolearn.dbn
已被弃用,您应该使用nolearn.lasagne
(如果可以的话) .如果要在千层面中进行多标签分类,则应将
regression
参数设置为True
,定义验证分数和自定义丢失 .这是一个例子:
适合调用BuildDBN,可以在这里找到here一个重要的事情需要注意的是dbn已被弃用,你只能找到它old_commits . 无论如何,如果你正在寻找额外的信息可能很好,从我在你的代码片段中看到的那两个检查是
DBN
的第一个参数[data, 300, 10]
应该是[data.shape[1], 300, 10]
基于文档和源代码 . 希望这可以帮助 .