2016-10-25 14 views
0

私はプログラミングに新しくなっていますので、先週Pythonを学び始めたので、ちょっと待ってください。私はあなたがより多くの情報のために必要なものを投稿するつもりですが、覚えています、私はn00bです。Python処理時間VSCODEで30分以上

私の問題:

私は、Python 2.7とVisual StudioのコードでMacOSXのシエラを使用し、弓削データ処理時間に実行している(すなわち5+分、10+分に近づくと、この特定のコードにしてい30+分)

何か提案がありますか?私は実際にどこでもオンライン上のソリューションであまりにも多くを見つけることができませんでした。

私のCPU in activity monitorは、これらのプロセスを実行すると98%の安定した状態になります。これが正常であるのか、それとも高速化するのか分かりません。

注意点:シンプルで

は私の処理時間をコーディングは悪くないですが、アルゴリズムが導入されたときに、物事が道行き詰まらようで、それがイライラします。以下は

終わりに含まれ、私はそれを使用していますコーディングが出力で非常識な処理時間を除いて正常に動作するようである:



    import nltk 
    import random 
    from nltk.corpus import movie_reviews 
    from nltk.classify.scikitlearn import SklearnClassifier 
    import pickle 

    from sklearn.naive_bayes import MultinomialNB, GaussianNB, BernoulliNB 
    from sklearn.linear_model import LogisticRegression, SGDClassifier 
    from sklearn.svm import SVC, LinearSVC, NuSVC 

    from nltk.classify import ClassifierI 
    from statistics import mode 


    class VoteClassifier(ClassifierI): 
     def __init__(self, *classifiers): 
      self._classifiers = classifiers 

     def classify(self, features): 
      votes = [] 
      for c in self._classifiers: 
       v = c.classify(features) 
       votes.append(v) 
      return mode(votes) 

     def confidence(self, features): 
      votes = [] 
      for c in self._classifiers: 
       v = c.classify(features) 
       votes.append(v) 

      choice_votes = votes.count(mode(votes)) 
      conf = choice_votes/len(votes) 
      return conf 



    documents = [(list(movie_reviews.words(fileid)), category) 
       for category in movie_reviews.categories() 
       for fileid in movie_reviews.fileids(category)] 

    random.shuffle(documents) 

    all_words = [] 
    for w in movie_reviews.words(): 
     all_words.append(w.lower()) 

    all_words = nltk.FreqDist(all_words) 

    word_features = list(all_words.keys())[:3000] 

    def find_features(document): 
     words = set(document) 
     features = {} 
     for w in word_features: 
      features[w] = (w in words) 

     return features 

    # print((find_features(movie_reviews.words('neg/cv000_29416.txt')))) 

    featuresets = [(find_features(rev), category) for (rev, category) in documents] 

    training_set = featuresets[:1900] 
    testing_set = featuresets[:1900:] 

    # classifier = nltk.NaiveBayesClassifier.train(training_set) 

    classifier_f = open("naivebayes.pickle", "rb") 
    classifier = pickle.load(classifier_f) 
    classifier_f.close() 

    print("Original Naive Bayes Algo accuracy percent:", (nltk.classify.accuracy(classifier, testing_set))*100) 
    classifier.show_most_informative_features(15) 

    # save_classifier = open("naivebayes.pickle", "wb") 
    # pickle.dump(classifier, save_classifier) 
    # save_classifier.close() 

    MNB_classifier = SklearnClassifier(MultinomialNB()) 
    MNB_classifier.train(training_set) 
    print("MNB_classifier accuracy percent:", (nltk.classify.accuracy(MNB_classifier, testing_set))*100) 

    # GaussianNB_classifier = SklearnClassifier(GaussianNB()) 
    # GaussianNB_classifier.train(training_set) 
    # print("GaussianNB_classifier accuracy percent:", (nltk.classify.accuracy(GaussianNB_classifier, testing_set))*100) 

    BernoulliNB_classifier = SklearnClassifier(BernoulliNB()) 
    BernoulliNB_classifier.train(training_set) 
    print("BernoulliNB_classifier accuracy percent:", (nltk.classify.accuracy(BernoulliNB_classifier, testing_set))*100) 

    LogisticRegression_classifier = SklearnClassifier(LogisticRegression()) 
    LogisticRegression_classifier.train(training_set) 
    print("LogisticRegression_classifier accuracy percent:", (nltk.classify.accuracy(LogisticRegression_classifier, testing_set))*100) 

    SGDClassifier_classifier = SklearnClassifier(SGDClassifier()) 
    SGDClassifier_classifier.train(training_set) 
    print("SGDClassifier_classifier accuracy percent:", (nltk.classify.accuracy(SGDClassifier_classifier, testing_set))*100) 

    # SVC_classifier = SklearnClassifier(SVC()) 
    # SVC_classifier.train(training_set) 
    # print("SVC_classifier accuracy percent:", (nltk.classify.accuracy(SVC_classifier, testing_set))*100) 

    LinearSVC_classifier = SklearnClassifier(LinearSVC()) 
    LinearSVC_classifier.train(training_set) 
    print("LinearSVC_classifier accuracy percent:", (nltk.classify.accuracy(LinearSVC_classifier, testing_set))*100) 

    NuSVC_classifier = SklearnClassifier(NuSVC()) 
    NuSVC_classifier.train(training_set) 
    print("NuSVC_classifier accuracy percent:", (nltk.classify.accuracy(NuSVC_classifier, testing_set))*100) 

    voted_classifier = VoteClassifier(classifier, MNB_classifier, BernoulliNB_classifier, LogisticRegression_classifier, SGDClassifier_classifier, LinearSVC_classifier, NuSVC_classifier) 

    print("voted_classifier accuracy percent:", (nltk.classify.accuracy(voted_classifier, testing_set))*100) 

    print("Classication:", voted_classifier.classify(testing_set[0][0]), "Confidence %:", voted_classifier.confidence(testing_set[0][0])*100) 

    print("Classication:", voted_classifier.classify(testing_set[1][0]), "Confidence %:", voted_classifier.confidence(testing_set[1][0])*100) 
    print("Classication:", voted_classifier.classify(testing_set[2][0]), "Confidence %:", voted_classifier.confidence(testing_set[2][0])*100) 
    print("Classication:", voted_classifier.classify(testing_set[3][0]), "Confidence %:", voted_classifier.confidence(testing_set[3][0])*100) 
    print("Classication:", voted_classifier.classify(testing_set[4][0]), "Confidence %:", voted_classifier.confidence(testing_set[4][0])*100) 
    print("Classication:", voted_classifier.classify(testing_set[5][0]), "Confidence %:", voted_classifier.confidence(testing_set[5][0])*100) 



    ('Original Naive Bayes Algo accuracy percent:', 87.31578947368422) 
    Most Informative Features 
        insulting = True    neg : pos =  11.0 : 1.0 
         sans = True    neg : pos =  9.0 : 1.0 
       refreshingly = True    pos : neg =  8.4 : 1.0 
        wasting = True    neg : pos =  8.3 : 1.0 
       mediocrity = True    neg : pos =  7.7 : 1.0 
        dismissed = True    pos : neg =  7.0 : 1.0 
        customs = True    pos : neg =  6.3 : 1.0 
        fabric = True    pos : neg =  6.3 : 1.0 
       overwhelmed = True    pos : neg =  6.3 : 1.0 
       bruckheimer = True    neg : pos =  6.3 : 1.0 
         wires = True    neg : pos =  6.3 : 1.0 
        uplifting = True    pos : neg =  6.2 : 1.0 
         ugh = True    neg : pos =  5.8 : 1.0 
        stinks = True    neg : pos =  5.8 : 1.0 
         lang = True    pos : neg =  5.7 : 1.0 
    ('MNB_classifier accuracy percent:', 89.21052631578948) 
    ('BernoulliNB_classifier accuracy percent:', 86.42105263157895) 
    ('LogisticRegression_classifier accuracy percent:', 94.47368421052632) 
    ('SGDClassifier_classifier accuracy percent:', 85.73684210526315) 
    ('LinearSVC_classifier accuracy percent:', 99.52631578947368) 
    ('NuSVC_classifier accuracy percent:', 91.52631578947368) 
    ('voted_classifier accuracy percent:', 93.36842105263158) 
    ('Classication:', u'pos', 'Confidence %:', 100) 
    ('Classication:', u'pos', 'Confidence %:', 0) 
    ('Classication:', u'neg', 'Confidence %:', 0) 
    ('Classication:', u'neg', 'Confidence %:', 100) 
    ('Classication:', u'neg', 'Confidence %:', 100) 
    ('Classication:', u'neg', 'Confidence %:', 100) 

答えて

0

を私は問題があるかわかりません。ムービーレビューコーパスはそれほど大きくはありませんが、クラシファイアのトレーニングには長い時間がかかります.3つの機能を備えた7つのトレーニングを行います。大規模なデータセットを使用する場合は、徹夜で分類子を訓練するのに驚くことはありません。

トレーニングスクリプトをテストスクリプトから分離すること(あなたの訓練されたモデルをすべて漬けておく必要があります)、および/またはタイムスタンプ付きのメッセージを適切な時間にプリントアウトして、 。 (また、機能のリストから「the」、「a」、「。」などの共通のストップワードを削除することを検討してください)

+0

ありがとう、本当にありがとうと思います。 – pythlang

+0

申し訳ありませんが、私はenterを押すことを意味しませんでした。ですから、この正確なコーディングを使ってsentdexチュートリアルを見ていて、1分または2分の絶対最大時間で出力が返ってきたようです。本当にありがとう、私は問題を抱えていて、それがちょうど私だったのか、まったく新しいものなのか分からなかった。 – pythlang

+0

ようこそ。コードの時間と「プロファイリング」を学び、ランタイムがどこに浸るかを詳細に判断できます。クラシファイアをトレーニングするのは遅いですが、できるだけ多くのことを行うことができますが、それは非常に遅くなります。 – alexis

関連する問題