Я новичок ie, учащийся в машинном обучении.
Я получил набор данных диалога, состоящий из нескольких столбцов (высказывание, раунд и отправитель), и раунд, и отправитель являются категориальными данными, высказывание - текстовыми данными , Я должен предсказать поведение диалогового окна, которое 0-6.
Я хотел бы спросить, возможно ли ввести несколько X, которые содержали текстовые данные, с другими категориальными данными? Я пробовал нейронную сеть с двумя слоями ввода (встраивание слов и другие категориальные данные), и это работает хорошо. Я не уверен, возможно ли это в моделях sklearn.
Ниже приведен исходный код, который я использую только для текстовых данных:
from sklearn.naive_bayes import BernoulliNB, MultinomialNB
from sklearn import svm
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from xgboost import XGBClassifier
from sklearn import metrics
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_vectorizer = TfidfVectorizer()
def baseline_model(X_TR, X_TE, Y_TR, Y_TE):
X_TR = tfidf_vectorizer.fit_transform(X_TR)
X_TE = tfidf_vectorizer.transform(X_TE)
Models = ['Bernoulli NB','Multinomial NB','Svm (linear)','Logistic Regression',
'Random Forest','kNN','Decision Tree','XG Boost']
function = [BernoulliNB(),MultinomialNB(),svm.SVC(kernel="linear"),LogisticRegression(),
RandomForestClassifier(),KNeighborsClassifier(),DecisionTreeClassifier(),
XGBClassifier()]
perform_f1 = []
perform_acc = []
for i in tqdm(range(len(function))):
model = function[i]
#performance = cross_val_score(model, tfidf_vectorizer.fit_transform(x), y, cv=10, scoring'accuracy')
func = str(function[i])
print("==== ", func[0:func.index('(')], " ====")
model.fit(X_TR, Y_TR)
model.score(X_TE, Y_TE)
e = Y_TE
p = model.predict(X_TE)
print(metrics.classification_report(e,p))
perform_f1.append(metrics.f1_score(e,p,average='macro'))
perform_acc.append(metrics.accuracy_score(e,p))
result_f1_table = pd.DataFrame({"Models":Models,"Result f1 scores":perform_f1})
result_acc_table = pd.DataFrame({"Models":Models,"Result acc scores":perform_acc})
return result_f1_table, result_acc_table