Использование трех разных меток в машинном обучении - PullRequest
0 голосов
/ 07 ноября 2019

Я действительно новичок в машинном обучении. Я рассматриваю код, который разделяет значения спама или нежелательной почты в электронном письме. У меня проблема при настройке кодов для другого набора данных. Таким образом, мой набор данных не просто имеет значения хам или спам. У меня есть 2 разных значения классификации (возраст и пол). Когда я пытаюсь использовать 2 значения классификации в блоке кода ниже, я получаю сообщение об ошибке, слишком большое значение для распаковки. Как я могу поставить все мои ценности?

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test  = train_test_split(messages_bow, import_data['age'], import_data['gender'], test_size = 0.20, random_state = 0)

Всего кодов:

import numpy as np
import pandas
import nltk
from nltk.corpus import stopwords
import string

# Import Data.
import_data = pandas.read_csv('/root/Desktop/%20/%100.csv' , encoding='cp1252') 

# To See Columns Headers.
print(import_data.columns) 

# To Remove Duplications.
import_data.drop_duplicates(inplace = True) 

# To Find Data Size.
print(import_data.shape) 


#Tokenization (a list of tokens), will be used as the analyzer
#1.Punctuations are [!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]
#2.Stop words in natural language processing, are useless words (data).
def process_text(text):
    '''
    What will be covered:
    1. Remove punctuation
    2. Remove stopwords
    3. Return list of clean text words
    '''

    #1
    nopunc = [char for char in text if char not in string.punctuation]
    nopunc = ''.join(nopunc)

    #2
    clean_words = [word for word in nopunc.split() if word.lower() not in stopwords.words('english')]

    #3
    return clean_words

#Show the Tokenization (a list of tokens )
print(import_data['text'].head().apply(process_text)) 

# Convert the text into a matrix of token counts.
from sklearn.feature_extraction.text import CountVectorizer 
messages_bow = CountVectorizer(analyzer=process_text).fit_transform(import_data['text']) 

#Split data into 80% training & 20% testing data sets

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test  = train_test_split(messages_bow, import_data['gender'], import_data['frequency'], test_size = 0.20, random_state = 0)

#Get the shape of messages_bow
print(messages_bow.shape)

1 Ответ

1 голос
/ 07 ноября 2019

train_test_split разбивает каждый передаваемый ему аргумент на наборы поездов и тестов. Поскольку вы разделяете три отдельных типа данных, вам нужно 6 переменных:

X_train, X_test, age_train, age_test, gender_train, gender_test = train_test_split(messages_bow, import_data['age'], import_data['gender'], test_size=0.20, random_state=0)
...