Python k-折叠测试本身就能得到结果吗?
我的问题是,当我在第一行评论管道时,我仍然可以得到准确度分数。它让我很困惑,我想它应该报告一个错误为什么?看起来它不需要管道的定义。这是相关部分Python k-折叠测试本身就能得到结果吗?,python,machine-learning,scikit-learn,Python,Machine Learning,Scikit Learn,我的问题是,当我在第一行评论管道时,我仍然可以得到准确度分数。它让我很困惑,我想它应该报告一个错误为什么?看起来它不需要管道的定义。这是相关部分 简短的回答是:不,它不能。没有pipe\u lr行,代码将无法运行。它在没有它的情况下运行的唯一原因是,您在一些特殊的环境中运行它,例如ipython notebook,并且以前您使用这行运行相同的代码,因此它仍然在相同的范围内保留在内存中(因此第二次运行仍然访问原始的管道lr对象)。或者您实际上在代码中的其他地方定义了该变量(例如,在定义数据的块中,
简短的回答是:不,它不能。没有
pipe\u lr
行,代码将无法运行。它在没有它的情况下运行的唯一原因是,您在一些特殊的环境中运行它,例如ipython notebook,并且以前您使用这行运行相同的代码,因此它仍然在相同的范围内保留在内存中(因此第二次运行仍然访问原始的管道lr
对象)。或者您实际上在代码中的其他地方定义了该变量(例如,在定义数据的块中,mms
等,您从问题本身中删除了该变量)。当在干净的环境中正确运行时,如果没有pipe\u lr
,此代码将无法工作(甚至无法运行) 如果你让人们知道你用什么语言编码,然后用标签标记,你会得到更多的帮助。让我猜猜,你使用的是ipython笔记本,运行了这个代码,然后注释了一行,重新运行这个单元,它仍然可以工作?是的,你是对的。是的,我和spyder一起运行它。我以前从来不知道。非常感谢。
from sklearn.ensemble import ExtraTreesClassifier
from sklearn.feature_selection import SelectFromModel
import pandas as pd
import numpy as np
from sklearn.cross_validation import train_test_split
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import LabelEncoder
from sklearn.pipeline import Pipeline
from sklearn.tree import DecisionTreeClassifier
from sklearn.cross_validation import StratifiedKFold
pipe_lr=Pipeline([('normalization',mms),
('feature_selection',feature_selection),
('classification',DecisionTreeClassifier())])
"""
K-fold test
"""
kfold=StratifiedKFold(y=y_train,n_folds=10,random_state=1)
scores=[]
features=[]
for k,(train,test) in enumerate (kfold):
pipe_lr.fit(X_train[train],y_train[train])
score=pipe_lr.score(X_train[test],y_train[test])
scores.append(score)
print('Fold: %s, Class dist.: %s,Acc: %.3f' %(k+1,
np.bincount(y_train[train]), score))