为什么在bigram模型上auc分数降低?

时间:2019-08-30 06:57:31

标签: svm roc auc ensemble-learning

我创建了3个unigram,bigram和trigram。之后,我使用sklearn矢量化器对其进行矢量化。然后将数据分为训练集和测试集。然后使用这三个模型训练svm和袋装svm.bigram模型上的auc分数降低了。什么问题?让我们显示一些代码 在这里,我阅读了bigram fearure.bigram的特色专栏:数码相机,室内图像

df_unigram=pd.read_csv('unigram.csv')
df_bigram=pd.read_csv('bigram.csv')
lst_unigram=df_unigram.iloc[:, 0].tolist()
lst_bigram=df_bigram.iloc[:, 0].tolist()

然后我结合了以下功能:     lst_bigram = lst_bigram + lst_unigram

之后,我将以上列表隐藏到字典中。因为TfidfVectorizer取消了字典功能,并基于特征和句子进行矢量化

我有不平衡数据集,其中包含 135个否定句子和365 pos句子。在这里,我拆分了数据集:

from sklearn.model_selection import train_test_split
sentence_train, sentence_test, polarity_train, polarity_test = train_test_split(lst_sentences, lst_polarity, test_size=0.3, random_state=42)

在这里我对模型进行矢量化

vectorizer2 = TfidfVectorizer(vocabulary=set(dic_bigram_features),ngram_range=(1,2))
tf_idf_train2=vectorizer2.fit_transform(sentence_train)
tf_idf_test2=vectorizer2.fit_transform(sentence_test)

这是我的功能,可以给模型类型如bigram,trigram和...,并返回auc得分

def svm_predictions(model_type):
fpr = dict()
tpr = dict()
roc_auc = dict()
if model_type=="uni":
    clf=SVC(C=100.0,kernel='linear',probability=True)
    clf.fit(tf_idf_train1, polarity_train)
    probs = clf.predict_proba(tf_idf_test1)
    preds= probs[:,1]
    fpr, tpr, threshold = metrics.roc_curve(polarity_test, preds)
    roc_auc = metrics.auc(fpr, tpr)
if model_type=="bi":
    clf=SVC(C=100.0,kernel='linear',probability=True)
    clf.fit(tf_idf_train2, polarity_train)
    probs = clf.predict_proba(tf_idf_test2)
    preds= probs[:,1]
    fpr, tpr, threshold = metrics.roc_curve(polarity_test, preds)
    roc_auc = metrics.auc(fpr, tpr)
if model_type=="tri":
    clf=SVC(C=100.0,kernel='linear',probability=True)
    clf.fit(tf_idf_train3, polarity_train)
    probs = clf.predict_proba(tf_idf_test3)
    preds= probs[:,1]
    fpr, tpr, threshold = metrics.roc_curve(polarity_test, preds)
    roc_auc = metrics.auc(fpr, tpr)
return roc_auc

这是我针对 svm和袋装svm 的unigram,bigram和trigram模型的结果:

enter image description here

...

0 个答案:

没有答案