微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TypeError:字符串索引必须是整数不知道我在做什么错

如何解决TypeError:字符串索引必须是整数不知道我在做什么错

我有一个包含两列的数据集,一列标识电子邮件是否被归类为垃圾邮件,另一列显示电子邮件内容。香港专业教育学院一直试图与PSO和ABC实施幼稚的贝叶斯。但是我收到错误TypeError:字符串索引必须是整数。

email_train,email_test,spam_train,spam_test train_test_split(dfTotal.Email,dfTotal.Spam,test_size=0.3,random_state=0)

email_test_dtm = cv.transform(email_test)
# convert to TFIDF form
email_test_tf = tf.fit_transform(email_test_dtm)
email_test_tf

人工蜂群

 from Hive import Hive 
from Hive import Utilities
from sklearn.metrics import log_loss

# ---- SOLVE TEST CASE WITH ARTIFICIAL BEE COLONY ALGORITHM

def run(lowBounds,upBounds,evaluator):

    model = Hive.BeeHive(lower = lowBounds,# MUST BE A LIST !
                         upper = upBounds,# MUST BE A LIST ! 
                         fun       = evaluator,numb_bees =  100,max_itrs  =  2,)

    # runs model
    cost,sol = model.run()

    # plots convergence
    Utilities.ConvergencePlot(cost)

    # prints out best solution
    print("fitness Value ABC: {0}".format(model.best))
    ABC_model = MultinomialNB(alpha=10**sol[0]).fit(email_train_tf,spam_train) # Create the optimized model with best parameter
    result = ABC_model.predict(email_test_tf) # predict with the ABC_model
    return sol,result

进口机会

 import optunity
    import optunity.metrics

朴素贝叶斯

from sklearn.naive_bayes import MultinomialNB

nb = MultinomialNB()
nb.get_params()
# fit tf-idf representation to NB model
nb.fit(email_train_tf,spam_train)

# class predictions for testing set
result1 = nb.predict(email_test_tf)

def evaluator(params):

    nBayes = MultinomialNB(alpha=10**params[0]).fit(email_train_tf,spam_train)
    
    
    pred_proba = nBayes.predict_proba(email_test_tf)
    return log_loss(spam_test,pred_proba)
    

sol,result3 = run([-2],[1],evaluator)

我收到的回溯信息如下:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-44-006c296828ed> in <module>
      8 
      9 
---> 10 sol,evaluator)

<ipython-input-32-6852d973eb15> in run(lowBounds,evaluator)
     19 
     20     # plots convergence
---> 21     Utilities.ConvergencePlot(cost)
     22 
     23     # prints out best solution

c:\users\lidak\article\src\hive\Hive\Utilities.py in ConvergencePlot(cost)
     55     labels = ["Best Cost Function","Mean Cost Function"]
     56     plt.figure(figsize=(12.5,4));
---> 57     plt.plot(range(len(cost["best"])),cost["best"],label=labels[0]);
     58     plt.scatter(range(len(cost["mean"])),cost["mean"],color='red',label=labels[1]);
     59     plt.xlabel("Iteration #");

TypeError: string indices must be integers

<figure size 900x288 with 0 Axes>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。