Точность теста всегда высока независимо от того, насколько маленький мой тренировочный набор - PullRequest
0 голосов
/ 02 декабря 2019

Я делаю проект, в котором я пытаюсь классифицировать комментарии по различным категориям: «ядовитые», «суровые_отоксичные», «непристойные», «оскорбительные», «индивидуальные_ ненависти». Набор данных, который я использую, взят из этой задачи Kaggle: https://www.kaggle.com/c/jigsaw-toxic-comment-classification-challenge. Текущая проблема, с которой я сталкиваюсь, заключается в том, что независимо от того, насколько мал тренировочный набор данных, в который я помещаю свои данные, когда я прогнозирую метки для данных теста, моя точностьвсегда около или выше 90%. В этом случае я тренируюсь на 15 строках данных и тестирую на 159 556 строках. Обычно я был бы рад иметь высокую точность тестирования, но в этом случае я чувствую, что делаю что-то не так.

Я читаю данные в кадр данных pandas:

trainData = pd.read_csv('train.csv')

Вот как выглядят данные при печати:

                      id                                       comment_text  \
0       0000997932d777bf  Explanation\nWhy the edits made under my usern...   
1       000103f0d9cfb60f  D'aww! He matches this background colour I'm s...   
2       000113f07ec002fd  Hey man, I'm really not trying to edit war. It...   
3       0001b41b1c6bb37e  "\nMore\nI can't make any real suggestions on ...   
4       0001d958c54c6e35  You, sir, are my hero. Any chance you remember...   
...                  ...                                                ...   
159566  ffe987279560d7ff  ":::::And for the second time of asking, when ...   
159567  ffea4adeee384e90  You should be ashamed of yourself \n\nThat is ...   
159568  ffee36eab5c267c9  Spitzer \n\nUmm, theres no actual article for ...   
159569  fff125370e4aaaf3  And it looks like it was actually you who put ...   
159570  fff46fc426af1f9a  "\nAnd ... I really don't think you understand...   

        toxic  severe_toxic  obscene  threat  insult  identity_hate  
0           0             0        0       0       0              0  
1           0             0        0       0       0              0  
2           0             0        0       0       0              0  
3           0             0        0       0       0              0  
4           0             0        0       0       0              0  
...       ...           ...      ...     ...     ...            ...  
159566      0             0        0       0       0              0  
159567      0             0        0       0       0              0  
159568      0             0        0       0       0              0  
159569      0             0        0       0       0              0  
159570      0             0        0       0       0              0  

[159571 rows x 8 columns]

Затем я разделяю данные на train и test, используя train_test_split:

X = trainData.drop(labels= ['id','toxic','severe_toxic','obscene','threat','insult','identity_hate'],axis=1)
Y = trainData.drop(labels = ['id','comment_text'],axis=1)

trainX,testX,trainY,testY = train_test_split(X,Y,test_size=0.9999,random_state=99)

Яс помощью HashingVectorizer для преобразования комментариев в числовые векторы для классификации:Наконец, вот где я вызываю функции, и получаю вывод:

sol = hashVec()
logRegOVR(sol[0],sol[1])
toxic :
    Train Accuracy: 0.8666666666666667
    Test Accuracy: 0.9041590413397177
severe_toxic :
    Train Accuracy: 1.0
    Test Accuracy: 0.9900035097395272
obscene :
    Train Accuracy: 1.0
    Test Accuracy: 0.9470468048835519
threat :
    Train Accuracy: 1.0
    Test Accuracy: 0.9970041866178646
insult :
    Train Accuracy: 1.0
    Test Accuracy: 0.9506317531148938
identity_hate :
    Train Accuracy: 1.0
    Test Accuracy: 0.9911943142219659

Точность тестирования очень похожа, когда у меня более разумный train_test_split, 80% обучения и 20% тестирования.

Спасибо за помощь

1 Ответ

0 голосов
/ 02 декабря 2019

Если это несбалансированный набор данных, точность ничего не значит. Если 90% ваших комментариев к набору данных не попадают ни в одну из этих «токсичных» категорий, а модель всегда предсказывает, что комментарий «чистый», у вас все равно будет точность 90%.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...