将训练和测试进行多标签分类,以避免训练集中的数据丢失

时间:2019-05-20 15:37:23

标签: machine-learning

我有一个由两列组成的数据集(600行):

-摘要:其中包含文档文本

-关键字:包含用于标识该文档的关键字。

                                               Summary                     KeyWords_in_Array_wo_insurance
0    court sanction scheme transfer insur reinsur b...                                       [insolvency]
1    immedi custodi sentenc month week impos direct...  [administration of justice, civil evidence, se...
2    motorist injur hit run collis car identifi dri...                         [negligence, road traffic]
3    claimant given permiss continu claim compani a...                      [insolvency, civil procedure]
4    court gave guidanc approach taken applic relea...                           [civil procedure, costs]
5    plaintiff solicitor entitl declar life critic ...                                           [trusts]
6    claimant insur establish requir standard road ...                           [personal injury, torts]
7    minimum indemn requir institut charter account...  [arbitration, civil procedure, costs, accounta...
8    applic secur cost court could take account eve...          [civil procedure, insolvency, cpr, costs]

我想预测哪些关键字标识摘要。 关键字不是互斥的。

我的代码是:

X_train, X_test, y_train, y_test = train_test_split(df_final["Summary"], df_final["KeyWords_in_Array_wo_insurance"], test_size=0.20, random_state=42)

mlb = MultiLabelBinarizer()
y_train_mlb = mlb.fit_transform(y_train)

classifier = Pipeline([
    ('vectorizer', CountVectorizer()),
    ('tfidf', TfidfTransformer()),
    ('clf', OneVsRestClassifier(LinearSVC()))])


classifier.fit(X_train, y_train_mlb)
y_predicted = classifier.predict(X_test)
all_labels = mlb.inverse_transform(y_predicted)

y_test_mlb = mlb.transform(y_test)


print("Accuracy = ", accuracy_score(y_test_mlb,y_predicted))

我的准确性得分很低:20%

因此,我认为我的分类不够好。

其原因可能是某些关键字仅使用一次。 例如,关键字“动物”或“伙伴关系”或“成功”仅用于1行。 (意味着,它们仅分配给一个摘要)

因此,我认为,当我在训练和测试中拆分数据集时,一些“孤独的关键字”会输入测试数据集,而不是训练数据集。因此,将永远不会对模型进行训练。

这是我的准确性如此之低的原因吗?

还是我做错了其他事情?

1 个答案:

答案 0 :(得分:0)

我认为这可能是因为您要获取的所有不同类的数据都不多。如果您要通过两节课来训练某项内容,则每个课程都需要数千个文本。也许你没有。

对于您来说,民事诉讼程序和民事证据也被视为不同的类别。我可以想象,如果对所有这些词都进行词法化处理,并创建较小的类别(例如,将这两个词作为“民事”加入),您会得到更好的结果吗?