Python 3.x 获取:AttributeError:';列表';对象没有属性';下';在尝试运行NLP分类模型时
正在尝试按照代码运行,但获取AttributeError: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')
# 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”]
。