机器从sklearn学习

时间:2018-06-19 00:28:38

标签: python-3.x scikit-learn

我正在学习sklearn模块以及如何分割数据。

我按照指令代码

 categories = ['alt.atheism', 'talk.religion.misc', 'comp.graphics', 
 'sci.space']
  newsgroups_train = fetch_20newsgroups(subset='train',
                                  remove=('headers', 'footers', 
 'quotes'),
                                  categories=categories)
newsgroups_test = fetch_20newsgroups(subset='test',
                                 remove=('headers', 'footers', 
'quotes'),
                                 categories=categories)

num_test = len(newsgroups_test.target)
test_data, test_labels = int(newsgroups_test.data[num_test/2:]), 
int(newsgroups_test.target[num_test/2:])
dev_data, dev_labels = int(newsgroups_test.data[:num_test/2]), 
int(newsgroups_test.target[:num_test/2])
train_data, train_labels = int(newsgroups_train.data),
int(newsgroups_train.target)
print('training label shape:', train_labels.shape)
print( 'test label shape:', test_labels.shape)
print( 'dev label shape:', dev_labels.shape)
print('labels names:', newsgroups_train.target_names)

但是我得到了这样的错误

TypeError Traceback(最近一次调用最后一次)  in()       8       9 num_test = len(newsgroups_test.target) ---> 10 test_data,test_labels = int(newsgroups_test.data [num_test / 2:]),int(newsgroups_test.target [num_test / 2:])      11 dev_data,dev_labels = int(newsgroups_test.data [:num_test / 2]),int(newsgroups_test.target [:num_test / 2])      12 train_data,train_labels = int(newsgroups_train.data),int(newsgroups_train.target)

TypeError:切片索引必须是整数或无或具有索引方法

不确定是什么问题。

谢谢你们

1 个答案:

答案 0 :(得分:2)

虽然我对scikits数据加载器不是很熟悉,但如果您使用 python3 ,则错误可能无关。您应该进行整数除法,因为[]运算符需要整数值。尝试使用除法运算符//,它确保返回的值是一个整数,如果两个args都是整数,基本上是math.floor(a/b)。在python3中,除非两个参数都是整数,否则除法运算符/返回一个不是整数的浮点数。

尝试更改

num_test/2

num_test//2

示例:

newsgroups_test.target[num_test//2:]

在某些python2版本中也可以使用运算符//