我打算在此link中尝试代码:
我从引用StratifiedKFold(n_splits=60)
的行中收到错误。谁能告诉我如何解决这个错误?
以下是代码:
import numpy as np
from scipy import interp
import matplotlib.pyplot as plt
from itertools import cycle
from sklearn import svm, datasets
from sklearn.metrics import roc_curve, auc
from sklearn.cross_validation import StratifiedKFold
iris = datasets.load_iris()
X = iris.data
y = iris.target
X, y = X[y != 2], y
X, y
cv = StratifiedKFold(n_splits=6)
classifier = svm.SVC(kernel='linear', probability=True,
random_state=random_state)
mean_tpr = 0.0
mean_fpr = np.linspace(0, 1, 100)
这是错误:
TypeError Traceback (most recent call last)
<ipython-input-227-2af2773f4987> in <module>()
----> 1 sklearn.cross_validation.StratifiedKFold(n_splits=6)
2 #cv = StratifiedKFold(n_splits=6, shuffle=True, random_state=1)
3 classifier = svm.SVC(kernel='linear', probability=True,
4 random_state=random_state)
5
TypeError: __init__() got an unexpected keyword argument 'n_splits'
答案 0 :(得分:5)
导入sklearn.cross-validation
模块时,您没有收到任何警告。这意味着您安装的版本低于0.18。
如果您的scikit-learn版本为< 0.18
,请更改以下行:
(摘自StratifiedKFold documentation for version 0.17)
#Notice the extra parameter y and change of name for n_splits to n_folds
cv = StratifiedKFold(y, n_folds=6)
#Also note that the cv is called directly in for loop
for train_index, test_index in cv:
print("TRAIN:", train_index, "TEST:", test_index)
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
如果您的scikit-learn版本为>=0.18
,那么只有您可以使用n_splits
的{{1}}参数:
(取自StratifiedKFold current documentation,这是我认为你所指的)
cv
<强>建议强>:
更新你的scikit-learn到最新版本0.18。因为您通过直接搜索找到的大多数文档都是这个版本,它会让您感到困惑。
编辑:
我已经在这里回答了你的类似问题: - Issue with Cross Validation
所以下次,请提一下您在问题中使用的库版本,并记得访问相关文档,而不是其他文档。