无法导入cross_validation

时间:2018-10-11 09:09:49

标签: python-3.x scikit-learn

在构建新的神经网络时 我似乎无法拆分数据。 由于某些未知原因,它不会导入train.test.split

  

ImportError:无法导入名称“ cross_validation”

#split dataset in result y and data X
X = np.array(df.drop(['Survived'],1)) # not sure why this wasnt needed
y = np.array(df['Survived'])
X_train, X_test, y_train, y_test = cross_validation.train_test_split(X,y,test_size=0.2)

我尝试了多种方法来导入sklearn函数(已标记):

#from sklearn.model_selection import GridSearchCV, KFold
#from sklearn import module_selection # =>   cross_validation.train_test_split
#from sklearn import cross_validation
#from sklearn.svm.libsvm import cross_validation
#from sklearn import preprocessing, cross_validation

from sklearn import preprocessing, cross_validation
 #here are the machine algorythms
from sklearn.neighbors import KNeighborsClassifier  
from sklearn.svm import SVC
from sklearn.naive_bayes import GaussianNB    #added myself (https://machinelearningmastery.com/compare-machine-learning-algorithms-python-scikit-learn/)
from sklearn import model_selection
from sklearn.metrics import classification_report, accuracy_score

我的背景是Python的入门者, 我在C#中手动创建了神经网络RNN LSTN,但在python中却没有 现在我想接受kaggle泰坦尼克号的挑战(因此我无法在此处发布所有代码,但仅显示此问题区域)

使用的版本:
python:3.6.6
python:由conda-forge
打包 python:(默认,2018年7月26日,11:48:23)[MSC v.1900 64位(AMD64)]
keras:配置为> tensorflow 1.9.0
熊猫:0.23.4
numpy的:1.15.2
sklearn:0.20.0
matplotlib:3.0.0

另外请注意,该功能本身可在使用相同内核的其他jupyter笔记本中使用(我什至尝试了其导入行),但现在不起作用。

5 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,并发现这是一个版本问题

如果您使用的是较旧的Jupiter版本笔记本电脑

from sklearn.cross_validation import train_test_split

或使用此

from sklearn.model_selection import train_test_split

答案 1 :(得分:0)

我对此并不完全确定,我正在运行一些jupyter笔记本。 那时有些人正在积极地运行张量流。
即使我停止了它们,我也无法运行新的泰坦尼克号kaggle任务。
但是重新启动后,它又可以工作了。

我讨厌这样的解决方案,因为它们使我不知道是什么原因。 我总体上怀疑python环境的稳定性(我习惯了更稳定的C#), 我注意到人们已经报告说并行处理不能很好地工作,所以也许几个笔记本电脑并排会导致张量流问题。

Package             Version  
------------------- ---------
absl-py             0.5.0    
astor               0.7.1    
backcall            0.1.0    
certifi             2018.8.24
colorama            0.3.9    
cycler              0.10.0   
decorator           4.3.0    
gast                0.2.0    
grpcio              1.15.0   
h5py                2.8.0    
ipykernel           5.0.0    
ipython             7.0.1    
ipython-genutils    0.2.0    
jedi                0.13.1   
jupyter-client      5.2.3    
jupyter-core        4.4.0    
Keras               2.2.4    
Keras-Applications  1.0.4    
Keras-Preprocessing 1.0.2    
kiwisolver          1.0.1    
Mako                1.0.7    
Markdown            3.0.1    
MarkupSafe          1.0      
matplotlib          3.0.0    
mkl-fft             1.0.6    
mkl-random          1.0.1    
numpy               1.15.2   
pandas              0.23.4   
parso               0.3.1    
pickleshare         0.7.5    
pip                 18.1     
prompt-toolkit      2.0.5    
protobuf            3.6.1    
Pygments            2.2.0    
pygpu               0.7.6    
pyparsing           2.2.1    
pyreadline          2.1      
python-dateutil     2.7.3    
pytz                2018.5   
PyYAML              3.13     
pyzmq               17.0.0   
scikit-learn        0.20.0   
scipy               1.1.0    
setuptools          40.4.3   
simplegeneric       0.8.1    
sip                 4.19.12  
six                 1.11.0   
tensorboard         1.9.0    
tensorflow          1.9.0    
termcolor           1.1.0    
Theano              1.0.3    
tornado             5.1.1    
traitlets           4.3.2    
wcwidth             0.1.7    
Werkzeug            0.14.1   
wheel               0.32.1   
wincertstore        0.2      

答案 2 :(得分:0)

用于验证训练和测试数据的交叉验证可以用作:

from sklearn.model_selection import train_test_split

然后,如果X是您的特征,y是您的标签,则可以通过以下方式获得火车测试数据:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=3)

哪里

test_size :(乘以100)给出要分配给测试的总数据的百分比(即此处为30%)

random_state:用于在任何情况下生成SAME火车测试拆分,前提是其他参数保持不变。这对许多人一起学习很有帮助,这样他们可以获得相同的最终结果,这显然取决于训练和测试数据的分割方式

最后这是主要来源:

https://scikit-learn.org/stable/modules/cross_validation.html

答案 3 :(得分:0)

对于较旧的版本--->
from sklearn.cross_validation import train_test_split

对于新版本--->
from sklearn.model_selection import train_test_split

答案 4 :(得分:-1)

该模块从0.20开始被删除。

  

从0.18版开始不推荐使用:从0.20中删除此模块。请改用sklearn.model_selection.cross_val_score。

enter image description here