【问题标题】:machine learning from sklearnsklearn 的机器学习
【发布时间】:2018-11-27 20:49:57
【问题描述】:

我正在学习 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(最近一次调用最后一次) 在 () 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:切片索引必须是整数或 None 或具有 index 方法

不知道出了什么问题。

谢谢大家

【问题讨论】:

    标签: python-3.x scikit-learn


    【解决方案1】:

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

    尝试改变

    num_test/2
    

    num_test//2
    

    例子:

    newsgroups_test.target[num_test//2:]
    

    操作符//在某些python2版本中也可用。

    【讨论】: