如何将excel电子表格中的数据转换为合适的表示形式,以训练scikit学习模型



我有一个excel文件中的输入数据,我使用nltk:按照以下方式处理了这些数据

rb = open_workbook('subjectcat.xlsx')#C:/Users/5460/Desktop/
wb = copy(rb) #making a copy
sheet = rb.sheet_by_index(0)
data = ()
for row_index in range(1,500): #train using 500
temp,add = (),()
subject,cat = 0,0 #trial
for col_index in range(1,3):        
if col_index==1:
#print col_index
subject = sheet.cell(row_index,col_index).value
#print subject
#print cellname(row_index,col_index)
subject = "'" + subject
#temp +=(subject,)
#print temp
elif col_index==2:
#print col_index
cat = sheet.cell(row_index,col_index).value
#print cat
#print cellname(row_index,col_index)
cat = "'" + cat + "'"
add = add + (subject,cat)
#print (add)
data = data + (add,)
print 'done'
training_data = list(data)
training_data = training_data[1:][::2] #removing the even items

我现在必须使用scikit学习来训练分类器。我在网上读了很多支持向量机的教程,但它们似乎都使用了不同的方法来创建数据集。如果有人能给我一些如何继续的建议,我将不胜感激,因为我现在陷入了困境。我正在训练分类器将电子邮件分类。提前感谢!

将输入数据包装为2D numpy数组:每个样本/实例/观察一行。数组的列应该存储样本的数字描述符(特征)。

您需要将输出/目标类存储为另一个numpy整数数组。每个目标类都应该分配一个整数(例如,0表示"ham",1表示"spam")。

输出/目标类数组的条目数应与输入数据中的行数一样多(每个样本一个标签)。

如果您不知道如何将Python列表转换为numpy数组,请阅读numpy的文档。你可以从这里开始:

  • http://docs.scipy.org/doc/numpy/user/basics.creation.html

为了获得SVM的良好预测精度,您还需要确保您的特征是有意义的(例如,不要使用字符串或整数表示来编码分类输入特征,而是使用一个热编码特征扩展),并将数据标准化为中心并按单位方差缩放。特别要看一下:

  • http://scikit-learn.org/stable/modules/preprocessing.html

编辑:我没有看到你的最后一句话:如果你的输入数据是原始电子邮件文本,你必须提取特征(统计总结电子邮件内容的数字描述符)。在这种情况下,您需要提取文本特征:

  • http://scikit-learn.org/dev/modules/feature_extraction.html#text-特征提取

相关内容

  • 没有找到相关文章

最新更新