由于很多类别导致的内存错误

时间:2018-04-09 12:23:48

标签: python pandas machine-learning scikit-learn text-classification

我正在研究文本分类问题。这是我的数据集

Narration                               | Category
_________________________________________________________                             
clg cr: ten plus                        |transfer to ten plus
At Sydney, Garment payment BY Mr.Haj    |Transfer From Mr.Haj
RTGS-CPU Wales-Steven                   |Transfer from Steven
NEFT-Payment-Amy Adams/12march/XXXX4567 |Transfer from Amy Adams
KFC Chicken Burger                      |Food
Trent Wines and Rum                     |Alcohol
CD-Payment-2345XXX78 Imran              |Transfer from Imran
     .                                     .
     .                                     .
     .                                     .

问题是我有大量的数据集进行训练,(大约300万条目)因此形成了很多类别(大约500k类别)我不可能用这么多训练机器类别。问题在于个人转移,数据集中的示例:(从Mr.Haj转移,从Steven转移,......) 我也不想放松叙述的重要性因此我不想概括为“转移到XX”而不是党名。

我的两个问题是: 1.如何使用如此多的类别训练数据。 2.如何在测试时处理党名(例如:Mr.Haj,Steven),并使用类似的测试叙述数据,并将分类输出作为转移给客户。

我的剧本的一部分:

from sklearn.model_selection import train_test_split 
data= pd.read_csv('file.txt', delimiter='\t',usecols=['Narration','Category'],encoding=("utf-8"))
target_one=data['Category']
test_data= pd.read_csv('test_file.txt', delimiter='\t',usecols=['Narration','Category'],encoding=("utf-8"))

x_train, y_train = (data.Narration, data.Category )
x_test, y_test = (test_data.details, test_data.category)

from nltk.corpus import stopwords
vect = CountVectorizer(ngram_range=(1,2),stop_words='english')
X_train = vect.fit_transform(x_train)
X_test = vect.transform(x_test)

mnb = MultinomialNB(alpha =0.13)
mnb.fit(X_train,y_train)

0 个答案:

没有答案