"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
异常。
我才刚刚开始学习 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
异常。