【问题标题】:Scikit learn (Python 3.5): Do I need to import a library to make this work?Scikit learn (Python 3.5):我需要导入一个库来完成这项工作吗?
【发布时间】:2017-09-03 15:08:23
【问题描述】:

我正在通过Python Data Science Essentials (2nd Edition) 工作。

本书提供以下代码:

chosen_random_state = 1
X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.30, ran-dom_state=chosen_random_state)
print ("(X train shape %s, X test shape %s, \ny train shape %s, y test shape %s" \
% (X_train.shape, X_test.shape, y_train.shape, y_test.shape))
h1.fit(X_train,y_train)
print (h1.score(X_test,y_test)) 

当我尝试运行它时,我收到以下错误:

--------------------------------------------------------------------------- 
NameError                                 Traceback (most recent call last) <ipython-input-137-c5136df13468> in <module>()
          1 chosen_random_state = 1
    ----> 2 X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.30, random_state=chosen_random_state)
          3 print ("(X train shape %s, X test shape %s, \ny train shape %s, y test shape %s" % (X_train.shape, X_test.shape, y_train.shape, y_test.shape))
          4 h1.fit(X_train,y_train)
          5 print (h1.score(X_test,y_test))
    
    NameError: name 'cross_validation' is not defined

我怀疑我可能必须导入本书未提及的库。我已经搜索了手册,但找不到此功能。这是我需要创建的功能还是有人可以将我指向相关库?

【问题讨论】:

    标签: python python-3.x scikit-learn


    【解决方案1】:
    X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.30, ran-dom_state=chosen_random_state)
    print ("(X train shape %s, X test shape %s, \ny train shape %s, y test shape %s" \
    % (X_train.shape, X_test.shape, y_train.shape, y_test.shape))
    h1.fit(X_train,y_train)   
     X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.30, ran-dom_state=chosen_random_state)
        print ("(X train shape %s, X test shape %s, \ny train shape %s, y test shape %s" \
        % (X_train.shape, X_test.shape, y_train.shape, y_test.shape))
        h1.fit(X_train,y_train)
    

    【讨论】:

    • 欢迎来到 SO。虽然这段代码 sn-p 可能是解决方案,但包含解释确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
    【解决方案2】:

    sklearncross_validation 子模块是deprecated。你应该使用sklearn.model_selectioninstead

    from sklearn import model_selection
    
    ...
    X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.30, random_state=chosen_random_state)
    ...
    

    【讨论】:

    • 谢谢。这在 Python 3.6 中是否已弃用?当我现在在 Python 3.5 中调用它时它不会发出警告
    • 不在Python 3.6 中。但是当你迁移到新版本的 scikit (0.20) 时,你会在导入 cross_validation 子模块时遇到错误。
    • 谢谢!!现在真的很关心这本书。这是一个“新”版本,总是给我错误/过时的方法
    • 这是因为 sklearn 的升级速度将超过一本书的编写和出版速度。这总是发生。顺便说一句,与python升级无关,而是库本身
    【解决方案3】:

    这应该可以解决您的问题。试试看

    from sklearn.model_selection import train_test_split
    
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, ran-dom_state=chosen_random_state)
    
    print ("(X train shape %s, X test shape %s, \ny train shape %s, y test shape %s" \
            % (X_train.shape, X_test.shape, y_train.shape, y_test.shape))
    
    h1.fit(X_train,y_train)
    

    【讨论】:

      【解决方案4】:

      你应该导入

      from sklearn import cross_validation
      

      确保您已安装 sklearn。有关如何安装的说明,请参阅this

      【讨论】:

      • 谢谢!!!出于某种原因,@marcin swiercyzyna 的方法引发了另一个错误,但这有效!。使用 anaconda,所以这些必须预先安装\
      【解决方案5】:

      你必须导入这个:

      from sklearn.svm.libsvm import cross_validation
      

      【讨论】:

      • 感谢您的快速回答。当我按照你说的做时,我得到另一个错误。现在更新答案
      • 提供的另一个答案似乎有效。真的很好奇为什么这有效而旅游没有。是因为通过包含 train_split_test 方法的文件向下钻取到 libsvm?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 2016-04-23
      • 2018-05-03
      • 1970-01-01
      • 2019-06-12
      • 2017-02-24
      • 1970-01-01
      相关资源
      最近更新 更多