【问题标题】:How to get the indices for randomly selected rows in a list (Python)如何获取列表中随机选择的行的索引(Python)
【发布时间】:2015-02-24 21:05:08
【问题描述】:

好的,我不知道是我措辞不好还是什么,但我似乎找不到任何类似的东西来解决我的问题。

所以我有一个二维列表,每一行代表一个案例,每一列代表一个特征(用于机器学习)。另外,我有一个单独的列表(列)作为标签。

我想从 2D 列表中随机选择行来训练分类器,同时使用其余行来测试准确性。因此,我希望能够知道我用于训练的所有行索引以避免重复。

我认为问题有两个部分: 1)如何随机选择 2) 如何获取索引

再次,我不知道为什么我无法通过搜索在这里找到好的信息(也许我只是很烂)

抱歉,我还是社区的新手,所以我可能犯了很多格式错误。如果您有任何建议,请告诉我。

这是我用来获取二维列表的部分代码

#273 = number of cases
feature_list=[[0]*len(mega_list)]*273
#create counters to use for index later
link_count=0
feature_count=0
#print len(mega_list)
for link in url_list[:-1]:

    #setup the url
    samp_url='http://www.mtsamples.com'+link
    samp_url = "%20".join( samp_url.split() )

    #soup it for keywords
    samp_soup=BeautifulSoup(urllib2.urlopen(samp_url).read())
    keywords=samp_soup.find('meta')['content']
    keywords=keywords.split(',')

    for keys in keywords:
        #print 'megalist: '+ str(mega_list.index(keys))
        if keys in mega_list:
            feature_list[link_count][mega_list.index(keys)]=1 

mega_list:包含所有关键字的列表

feature_list:二维列表,mega_list 中的任何单词,该特定单元格设置为 1,否则为 0

【问题讨论】:

    标签: python search random machine-learning indices


    【解决方案1】:

    我会将数据存储在 pandas 数据框而不是 2D 列表中。如果我正确理解您的数据,您可以这样做:

    import pandas as pd
    
    df = pd.DataFrame(feature_list, columns = mega_list)
    

    我没有看到任何提及因变量,但我假设您有一个,因为您提到了分类器算法。如果您的因变量称为“Y”并且是列表格式,其索引与您的特征对齐,那么此代码将适用于您:

    from sklearn import cross_validation
    
    x_train, x_test, y_train, y_test = cross_validation.train_test_split(
        df, Y, test_size=0.8, random_state=0)
    

    【讨论】:

    • 嘿!是的,我确实有一个因变量,只是在我提供的代码中没有提到。我想我会试试这个算法!会回来汇报的哈哈。谢谢!
    • 好吧,仔细看看,这个可能就不需要了。我正在使用朴素贝叶斯进行多项式拟合,似乎 {clf = MultinomialNB() >>> clf.fit(X, y) MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True)} 可以完成这项工作(这是网站上的示例)。不过我不太确定,我觉得这个帖子开始偏离原来的话题了哈哈
    【解决方案2】:

    据我了解,您有一个列表,您想对列表进行采样并保存索引以供将来使用。 见:https://docs.python.org/2/library/random.html

    你可以做一个 random.sample(xrange(sizeoflist),sizeofsample) 来返回你的样本的索引。然后,您可以使用该样本进行训练并跳过它们(或花哨并做一个 Set 差异)以进行验证。

    希望对你有帮助

    【讨论】:

    • 谢谢,这解决了问题。虽然现在更多的问题浮出水面......我去的另一个线程!
    猜你喜欢
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    相关资源
    最近更新 更多