4

マルチラベル分類の問題を試しています。私のデータは次のようになります

DocID   Content             Tags           
1       some text here...   [70]
2       some text here...   [59]
3       some text here...  [183]
4       some text here...  [173]
5       some text here...   [71]
6       some text here...   [98]
7       some text here...  [211]
8       some text here...  [188]
.       .............      .....
.       .............      .....
.       .............      .....

ここに私のコードがあります

traindf = pd.read_csv("mul.csv")
print "This is what our training data looks like:"
print traindf

t=TfidfVectorizer()

X=traindf["Content"]

y=traindf["Tags"]

print "Original Content"
print X
X=t.fit_transform(X)
print "Content After transformation"
print X
print "Original Tags"
print y
y=MultiLabelBinarizer().fit_transform(y)
print "Tags After transformation"
print y

print "Features extracted:"
print t.get_feature_names()
print "Scores of features extracted"
idf = t.idf_
print dict(zip(t.get_feature_names(), idf))

print "Splitting into training and validation sets..."
Xtrain, Xvalidate, ytrain, yvalidate = train_test_split(X, y, test_size=.5)

print "Training Set Content and Tags"
print Xtrain
print ytrain
print "Validation Set Content and Tags"
print Xvalidate
print yvalidate

print "Creating classifier"
clf = OneVsRestClassifier(LogisticRegression(penalty='l2', C=0.01))

clf.fit(Xtrain, ytrain)

predictions=clf.predict(Xvalidate)
print "Predicted Tags are:"
print predictions
print "Correct Tags on Validation Set are :"
print yvalidate
print "Accuracy on validation set: %.3f"  % clf.score(Xvalidate,yvalidate)

コードは正常に実行されますが、これらのメッセージが引き続き表示されます

X:\Anaconda2\lib\site-packages\sklearn\multiclass.py:70: UserWarning: Label not 288 is present in all training examples.
  str(classes[c]))
X:\Anaconda2\lib\site-packages\sklearn\multiclass.py:70: UserWarning: Label not 304 is present in all training examples.
  str(classes[c]))
X:\Anaconda2\lib\site-packages\sklearn\multiclass.py:70: UserWarning: Label not 340 is present in all training examples.

これは何を意味するのでしょうか?私のデータが十分に多様ではないことを示していますか?

4

1 に答える 1

5

一部のデータ マイニング アルゴリズムでは、一部のアイテムがすべてまたは多数のレコードに存在する場合に問題が発生します。これは、たとえば、Apriori アルゴリズムを使用してアソシエーション ルール マイニングを行う場合の問題です。

問題があるかどうかは、分類器によって異なります。あなたが使用している特定の分類子はわかりませんが、決定木を最大の深さでフィッティングするときに問題になる可能性がある例を次に示します。

Hunt のアルゴリズムと GINI インデックスを使用して最大深度の決定木をフィッティングし、最適な分割を決定するとします (説明については、スライド 35 以降を参照してください)。最初の分割は、レコードにラベル 288 が付いているかどうかに基づいている可能性があります。すべてのレコードにこのラベルが付いている場合、GINI インデックスはそのような分割に最適です。これは、トレーニング セットを実際に分割していないため、最初の非常に多くの分割が役に立たないことを意味します (288 を使用せずに空のセットを分割し、288 を使用してセット自体を分割します)。したがって、ツリーの最初の非常に多くのレベルは役に立ちません。次に最大深度を設定すると、決定木の精度が低下する可能性があります。

いずれにせよ、表示される警告はコードの問題ではなく、せいぜいデータ セットの問題です。使用している分類子がこの種のものに敏感かどうかを確認する必要があります。敏感な場合は、どこにでもあるラベルを除外すると、より良い結果が得られる可能性があります。

于 2015-12-17T20:01:13.250 に答える