Я пишу алгоритм, чтобы классифицировать твиты в моем наборе данных как положительные / отрицательные, и я хочу проверить его точность. Чтобы сделать это и найти наилучшее из возможных решений, я хочу иметь базовую линию (используя классические алгоритмы ML). После предварительной обработки твитов, вдохновленных соответствующей работой, я сначала исследовал модель Bag-of-Words, и мне удалось успешно запустить код и вычислить точность и Fscore. После некоторой предварительной обработки текста и разбиения набора данных на набор поездов и набор тестов:
from sklearn.cross_validation import train_test_split
X_train, X_test1, y_train, y_test1 = train_test_split(X, y, test_size = 0.11, random_state = 0)
Я хочу иметь возможность удалить все твиты, помеченные как отрицательные, из набора тестов (оставив только положительные) и вычислить точность, отзыв и Fscore алгоритма (а затем сделать то же самое для твитов, помеченных как положительный). Я пытался сделать это так:
finRow = len(X_test1)
finCol = len(X_test1[0])
for o in range(0, finrow):
if y_test1[o]== 1:
del y_test1[o]
X_test1 = np.delete(X_test1, o, axis=0)
но я получаю эту ошибку:
Traceback (most recent call last):
File "<ipython-input-4-5ed18876a8b5>", line 2, in <module>
if y_test1[o]== 1:
IndexError: list index out of range
X_test1 содержит твиты и имеет размер 1102 x 564, а y_test1 содержит нули и единицы (твит положительный или отрицательный) и имеет размер 1102. Появляется ошибка на 774-й итерации, когда длина y_test1 уменьшается с 1102 до 774.
Теперь я попытался сделать это так же:
a = 1
for o in range(0, finrow):
if (y_test1[o] == 1 and o <= finrow - a):
del y_test1[o]
a = a + 1
X_test1 = np.delete(X_test1, o, axis=0)
но я все еще получаю ту же ошибку, и я не знаю, является ли это лучшим способом удаления строк матрицы и элементов списка, потому что, когда я проверяю значения y_test1 У меня все еще есть некоторые (несколько, не все - как в начале) элементов, которые должны были быть удалены.
Я новичок в этом, и я понятия не имею, где моя ошибка.