2014-01-08 3 views
7

Я учусь использовать Python и scikit учиться и выполняется следующий блок кодов (первоначально из http://scikit-learn.org/stable/auto_examples/document_classification_20newsgroups.html#example-document-classification-20newsgroups-py) в IPython ноутбука (с помощью Python 2.7):SystemExit: 2 Ошибка при вызове parse_args() в IPython Notebook

from __future__ import print_function 
from optparse import OptionParser 

# parse commandline arguments 
op = OptionParser() 
op.add_option("--report", 
       action="store_true", dest="print_report", 
       help="Print a detailed classification report.") 
op.add_option("--chi2_select", 
       action="store", type="int", dest="select_chi2", 
       help="Select some number of features using a chi-squared test") 
op.add_option("--confusion_matrix", 
       action="store_true", dest="print_cm", 
       help="Print the confusion matrix.") 
op.add_option("--top10", 
       action="store_true", dest="print_top10", 
       help="Print ten most discriminative terms per class" 
        " for every classifier.") 
op.add_option("--all_categories", 
       action="store_true", dest="all_categories", 
       help="Whether to use all categories or not.") 
op.add_option("--use_hashing", 
       action="store_true", 
       help="Use a hashing vectorizer.") 
op.add_option("--n_features", 
       action="store", type=int, default=2 ** 16, 
       help="n_features when using the hashing vectorizer.") 
op.add_option("--filtered", 
       action="store_true", 
       help="Remove newsgroup information that is easily overfit: " 
        "headers, signatures, and quoting.") 

(opts, args) = op.parse_args() 
if len(args) > 0: 
    op.error("this script takes no arguments.") 
    sys.exit(1) 

После запуска кодов, я встретил следующее сообщение об ошибке:

An exception has occurred, use %tb to see the full traceback. 

SystemExit: 2 


Usage: -c [options] 

-c: error: no such option: -f 
To exit: use 'exit', 'quit', or Ctrl-D. 

я следовал инструкции и выполненный% ТБ, а следующие появились:

--------------------------------------------------------------------------- 
SystemExit        Traceback (most recent call last) 
<ipython-input-1-d44fadf3a28b> in <module>() 
    37     "headers, signatures, and quoting.") 
    38 
---> 39 (opts, args) = op.parse_args() 
    40 if len(args) > 0: 
    41  op.error("this script takes no arguments.") 

C:\Anaconda\lib\optparse.pyc in parse_args(self, args, values) 
    1399    stop = self._process_args(largs, rargs, values) 
    1400   except (BadOptionError, OptionValueError), err: 
-> 1401    self.error(str(err)) 
    1402 
    1403   args = largs + rargs 

C:\Anaconda\lib\optparse.pyc in error(self, msg) 
    1581   """ 
    1582   self.print_usage(sys.stderr) 
-> 1583   self.exit(2, "%s: error: %s\n" % (self.get_prog_name(), msg)) 
    1584 
    1585  def get_usage(self): 

C:\Anaconda\lib\optparse.pyc in exit(self, status, msg) 
    1571   if msg: 
    1572    sys.stderr.write(msg) 
-> 1573   sys.exit(status) 
    1574 
    1575  def error(self, msg): 

SystemExit: 2 

Я понимаю, что optparse устарел в пользу argparse, но поскольку я хотел понять блок-схему, я надеялся, что смогу запустить коды в ноутбуке iPython, чтобы понять, как это работает. Кажется, что someone else had this problem previously, но не было предложенного решения.

Есть ли способ устранить эту ошибку, чтобы я мог запускать коды обучения из iPython-ноутбука?

+0

Возможный дубликат [SystemExit: 2 Ошибка при вызове синтаксического анализа \ _args()] (http://stackoverflow.com/questions/42249982/systemexit-2-error-when-calling-parse-args) – daphtdazz

+0

В моем случае мой код работает в другой среде IDE (тот же компьютер) и ноутбуке Jupyter на другом компьютере – user3226167

ответ

2

Вы можете добавить аргументы, необходимые в виде списка строк

(opts, args) = op.parse_args(["--report"]) 
-2

модифицированного кода, ссылки ниже. добавили некоторые пояснения/многословие для понимания.

нуждается в более аккуратном, несколько устаревших пакетов приводят к предупреждениям.

https://github.com/aspiringguru/document-_classification.git

+0

Соответствующий код должен быть добавлен в сам * ответ *. Stack Overflow не является репозиторием ссылок. –

Смежные вопросы