Классификация списка слов с использованием Pandas DataFrame - PullRequest
0 голосов
/ 25 ноября 2018

Выполнить задание, которое я не имею ни малейшего представления о том, как его выполнить, у меня есть только базовое понимание, которое кажется:

"Генерация обучения 80:20: тестирование сплитов всех 4 категорий обзоров (DVD, книга, кухня и электроника), содержащие положительные и отрицательные отзывы.

Запишите количество отзывов в соответствии с категорией, настроением и набором данных (обучение или тестирование). Это можно сделать в кадре данных Pandas

Ответьте на следующие вопросы:
Относительно данных обучения для книг, сколько: а) положительных, б) отрицательных?

Относительно отрицательных данных тестирования, для сколькихЕсть ли для каждой категории: а) DVD, б) книга, в) кухня и г) электроника? "

import sys  
import re
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
from itertools import zip_longest
from nltk.tokenize import word_tokenize
from random import sample
from sussex_nltk.corpus_readers import AmazonReviewCorpusReader

def split_data(data, ratio=0.7):
     data = list(data)
     n = len(data)
     train_indices = sample(range(n), int(n * ratio))
     test_indices = list(set(range(n)) - set(train_indices))
     train = [data[i] for i in train_indices]
     test = [data[i] for i in test_indices]
     return (train, test) 

dvd_reader = AmazonReviewCorpusReader().category("dvd")
book_reader = AmazonReviewCorpusReader().category("book")
kitchen_reader = AmazonReviewCorpusReader().category("kitchen")
electronics_reader = AmazonReviewCorpusReader().category("electronics")

pos_train, pos_test = split_data(dvd_reader.positive().documents(), 0.8)
neg_train, neg_test = split_data(dvd_reader.negative().documents(), 0.8)
train = pos_train + neg_train
test = pos_test + neg_test

pos_train1, pos_test1 = split_data(book_reader.positive().documents(), 0.8)
neg_train1, neg_test1 = split_data(book_reader.negative().documents(), 0.8)
train1 = pos_train1 + neg_train1
test1 = pos_test1 + neg_test1

pos_train2, pos_test2 = split_data(kitchen_reader.positive().documents(), 0.8)
neg_train2, neg_test2 = split_data(kitchen_reader.negative().documents(), 0.8)
train2 = pos_train2 + neg_train2
test2 = pos_test2 + neg_test2

pos_train3, pos_test3 = split_data(electronics_reader.positive().documents(), 0.8)
neg_train3, neg_test3 = split_data(electronics_reader.negative().documents(), 0.8)
train3 = pos_train3 + neg_train3
test3 = pos_test3 + neg_test3

Итак, я получил 4 разные категории и разделил данные на положительные и отрицательные отзывы с соотношением 0,8, а затем дополнительно разделил положительные и отрицательные отзывы в данных обучения и тестирования.Хотя я не уверен, как использовать DataFrame панд для записи числа.

Я не уверен, достаточно ли этой информации для кого-либо, чтобы помочь мне, хотя при необходимости я могу попытаться добавить больше.Я не уверен, собираюсь ли я что-то маркировать или что ... Любое руководство я буду вечно благодарен.

Все, что я сделал, это добавил:

df = pd.DataFrame(list(zip_longest(train,test)), columns=["TRAIN","TEST"])
display(df)

print()

df = pd.DataFrame(list(zip_longest(train1,test1)),columns=["TRAIN","TEST"])
display(df)

print()

df = pd.DataFrame(list(zip_longest(train2,test2)),columns=["TRAIN","TEST"])
display(df)

print()

df = pd.DataFrame(list(zip_longest(train3,test3)),columns=["TRAIN","TEST"])
display(df)

Хотя то, как оно представлено, ужасно смотреть, и я считаю, что я должен идти за len () категорий, настроенийи наборы данных.Если кто-то может оказать какую-либо помощь, пожалуйста, сделайте.

Просто чтобы ответить на поставленные вопросы, я написал код:

df = pd.DataFrame(list(zip_longest(pos_train1,neg_train1)), columns=["TRAIN","TEST"])
display(df)

df = pd.DataFrame(list(zip_longest(neg_test,neg_test1,neg_test2,neg_test3)), columns=["DVD","BOOK","KITCHEN","ELECTRONICS"])
display(df)

Но еще раз я уверен, что это не лучший способ отобразить его.

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