Python 3.x 获取:AttributeError:';列表';对象没有属性';下';在尝试运行NLP分类模型时

Python 3.x 获取:AttributeError:';列表';对象没有属性';下';在尝试运行NLP分类模型时,python-3.x,nlp,Python 3.x,Nlp,正在尝试按照代码运行,但获取AttributeError: # Vectorize training and testing data def Vectorize(vec, X_train, X_test): X_train_vec = vec.fit_transform(X_train) X_test_vec = vec.transform(X_test) print('Vectorization complete.\n')

正在尝试按照代码运行,但获取AttributeError:

# Vectorize training and testing data
def Vectorize(vec, X_train, X_test):    
    
    X_train_vec = vec.fit_transform(X_train)
    X_test_vec = vec.transform(X_test)
    
    print('Vectorization complete.\n')
    
    return X_train_vec, X_test_vec

# Use multiple classifiers and grid search for prediction
def ML_modeling(models, params, X_train, X_test, y_train, y_test):    
    
    if not set(models.keys()).issubset(set(params.keys())):
        raise ValueError('Some estimators are missing parameters')

    for key in models.keys():
    
        model = models[key]
        param = params[key]
        gs = GridSearchCV(model, param, cv=5, error_score=0, refit=True)
        gs.fit(X_train, y_train)
        y_pred = gs.predict(X_test)
        
        # Print scores for the classifier
        print(key, ':', gs.best_params_)
        print("Precision: %1.3f \tRecall: %1.3f \t\tF1: %1.3f\n" % (precision_score(y_test, y_pred, average='macro'), recall_score(y_test, y_pred, average='macro'), f1_score(y_test, y_pred, average='macro')))
    
    return

models = {
    'Naive Bayes': GaussianNB()
}

params = {
    'Naive Bayes': { 'alpha': [0.5, 1], 'fit_prior': [True, False] }
}



# Train-test split and vectorize

X_train_vec, X_test_vec = Vectorize(TfidfVectorizer(), train["Abstract"], test["Abstract"])

ML_modeling(models, params, X_train_vec, X_test_vec, train.Include, test.Include)

正在尝试运行NLP分类模型(TFIDF)a。但是获取属性错误

AttributeError回溯(最近一次呼叫上次) 在里面 43#列车测试拆分和矢量化 44#X#u序列,X#u测试,y#u序列,y#u测试=序列测试分割(df['text'],df['category'],测试大小=0.2,随机播放=真) --->45 X_train_vec,X_test_vec=矢量化(TfidfVectorizer(),train[“Abstract”],test[“Abstract”]) 46 47 ML_建模(模型、参数、X_训练向量、X_测试向量、训练包含、测试包含)

矢量化(矢量控制、X_列、X_测试) 4 def矢量化(vec、X_列、X_测试): 5. ---->6 X_列向量=向量拟合变换(X_列) 7 X_测试向量=向量变换(X_测试) 八,

预处理后的数据:


如何消除此属性错误?

您没有显示实际调用lower的代码,但您正在传递一个列表,其中应该传递一个字符串。看看你的训练数据。所以我应该通过X_train.astype(str)?不,这不是一个你可以通过铸造来解决的问题。你需要弄清楚为什么你要传递一个列表而不是字符串。到目前为止我还没有任何答案。你能告诉我原因吗?你需要显示你的实际输入数据,
train[“Abstract”]