Scikit learn 通过替换sklearn.cross_验证从sklearn.model_选择导入StratifiedShuffleSplit时,参数应做哪些更改

Scikit learn 通过替换sklearn.cross_验证从sklearn.model_选择导入StratifiedShuffleSplit时,参数应做哪些更改,scikit-learn,cross-validation,Scikit Learn,Cross Validation,我正试图运行一个用于独立语音识别的python3代码,在那里我得到了一个关于使用的弃用警告: from sklearn.cross_validation import StratifiedShuffleSplit 为了删除此警告,我刚从sklearn.model\u selection导入了StratifiedShuffleSplit,而不是sklearn.cross\u validation,运行代码后,我得到: TypeError:“StratifiedShuffleSplit”对象不可编

我正试图运行一个用于独立语音识别的python3代码,在那里我得到了一个关于使用的弃用警告:

from sklearn.cross_validation import StratifiedShuffleSplit
为了删除此警告,我刚从
sklearn.model\u selection
导入了
StratifiedShuffleSplit
,而不是
sklearn.cross\u validation
,运行代码后,我得到:

TypeError:“StratifiedShuffleSplit”对象不可编辑

也许是因为

class sklearn.cross_validation.StratifiedShuffleSplit(y, n_iter=10, test_size=0.1, train_size=None, random_state=None)
y
是一个数组

在职期间:

class sklearn.cross_validation.StratifiedShuffleSplit(y, n_iter=10, test_size=0.1, train_size=None, random_state=None)
没有数组:

from sklearn.model_selection import StratifiedShuffleSplit
sss = StratifiedShuffleSplit(all_labels, test_size=0.1, random_state=0)

for n,i in enumerate(all_obs):
    all_obs[n] /= all_obs[n].sum(axis=0)

for train_index, test_index in sss:
    X_train, X_test = all_obs[train_index, ...], all_obs[test_index, ...]
    y_train, y_test = all_labels[train_index], all_labels[test_index]
ys = set(all_labels)
ms = [gmmhmm(7) for y in ys]

如何替换
所有标签
,因为它是符合
sklearn的数组。交叉验证
sklearn。模型选择
不接受数组参数。

两者的区别在于

  • sklearn.model_selection.StratifiedShuffleSplit
    是一个交叉验证程序

  • sklearn.cross\u validation.StratifiedShuffleSplit
    是一个交叉验证程序迭代器

因此,您的示例中的正确用法是

from sklearn.model_selection import StratifiedShuffleSplit
sss = StratifiedShuffleSplit(test_size=0.1, random_state=0)

for n,i in enumerate(all_obs):
    all_obs[n] /= all_obs[n].sum(axis=0)

for train_index, test_index in sss.split(all_obs, all_labels):
     print(train_index, test_index)

阅读

文档中的示例可能会有所帮助。两者的区别在于

  • sklearn.model_selection.StratifiedShuffleSplit
    是一个交叉验证程序

  • sklearn.cross\u validation.StratifiedShuffleSplit
    是一个交叉验证程序迭代器

因此,您的示例中的正确用法是

from sklearn.model_selection import StratifiedShuffleSplit
sss = StratifiedShuffleSplit(test_size=0.1, random_state=0)

for n,i in enumerate(all_obs):
    all_obs[n] /= all_obs[n].sum(axis=0)

for train_index, test_index in sss.split(all_obs, all_labels):
     print(train_index, test_index)

阅读

文档中的示例可能会有所帮助,请明智地使用粗体,当然不能使用代码块……我建议您将历史记录和口头推测保留为绝对意义,并发布带有完整错误跟踪的a(目前还不清楚您的错误确切弹出位置);还要确保删除错误后可能出现的任何代码,因为它从未执行过,并且与问题无关。在做任何事情之前,请务必明智地使用粗体,当然不能代替代码块……我恳请您保持历史记录和口头推测的绝对意义,并发布一篇带有完整错误跟踪的文章(目前还不清楚您的错误确切弹出位置);还要确保删除错误后可能出现的任何代码,因为它从未执行过,并且与问题无关。在做任何事情之前,一定要