"The indices parameter is deprecated and will be removed (assumed True) in 0.17" 是什么意思?

What does "The indices parameter is deprecated and will be removed (assumed True) in 0.17" mean?

我才刚刚开始学习 python 如果这真的很基础,我深表歉意 question/error。

我正在做 Kaggle 生物反应教程。我收到此错误

C:\Anaconda\lib\site-packages\sklearn\cross_validation.py:65: DeprecationWarning: The indices parameter is deprecated and will be removed (assumed True) in 0.17 stacklevel=1) Results: 0.458614231133

有人知道这是什么意思吗?我已经 Google 死了,找不到答案。

我 运行 的脚本是:

from sklearn.ensemble import RandomForestClassifier
from sklearn import cross_validation
import logloss
import numpy as np

def main():
    #read in  data, parse into training and target sets
    dataset = np.genfromtxt(open('train.csv','r'), delimiter=',', dtype='f8')[1:]
    target = np.array([x[0] for x in dataset])
    train = np.array([x[1:] for x in dataset])

    #In this case we'll use a random forest, but this could be any classifier
    cfr = RandomForestClassifier(n_estimators=100)

    #Simple K-Fold cross validation. 5 folds.
    #(Note: in older scikit-learn versions the "n_folds" argument is named "k".)
    cv = cross_validation.KFold(len(train), n_folds=5, indices=False)

    #iterate through the training and test cross validation segments and
    #run the classifier on each one, aggregating the results into a list
    results = []
    for traincv, testcv in cv:
        probas = cfr.fit(train[traincv], target[traincv]).predict_proba(train[testcv])
        results.append( logloss.llfun(target[testcv], [x[1] for x in probas]) )

    #print out the mean of the cross-validated results
    print "Results: " + str( np.array(results).mean() )
if __name__=="__main__":
    main()

我相信它是这样调用的:

__author__ = 'nickd'
import scipy as sp
def llfun(act, pred):
    epsilon = 1e-15
    pred = sp.maximum(epsilon, pred)
    pred = sp.minimum(1-epsilon, pred)
    ll = sum(act*sp.log(pred) + sp.subtract(1,act)*sp.log(sp.subtract(1,pred)))
    ll = ll * -1.0/len(act)
    return ll

再一次,如果这是基本的东西,真的很抱歉。我以前真的从来没有这样做过。

这意味着 indices 参数不再使用,可能会在 sklearn 的未来版本中删除。警告是为了让您有机会现在调整您的代码(即不要传递 indices 参数),这样您的代码在将来的更新中删除后就不会中断。

意思是你用indices关键字参数调用cross_validation.KFold的地方以后的版本将不支持:

cv = cross_validation.KFold(len(train), n_folds=5, indices=False)

根据错误消息,您将对 0.17 产生 indices=True 的效果。该消息指出他们将删除关键字参数,可能他们不会忽略未使用的关键字参数,因此,如果您继续尝试传入索引,您可能会在 0.17 中得到 TypeError 异常。