2015-02-24 203 views
0

好吧,我不知道我说的是不是很糟糕,或者其他什么,但我似乎无法在我的问题中找到类似的东西。如何获取列表中随机选择的行的索引(Python)

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

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

我觉得有两个部分的问题: 1)如何随机选择 2)如何获得指数

再次我不知道为什么我不能通过搜索在这里找到良好的信息(也许我只是吸)

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

下面是我使用来获取2D名单

#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的部分代码:二维表,在mega_list任何话,那具体的:所有的关键字

feature_list列表单元格被设置为1,否则为0

回答

1

我将数据存储在一个大熊猫数据帧,替代二维名单。如果我理解你的数据正确,你可以是这样做的:

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) 
+0

嘿!是的,我确实有一个因变量,只是在我提供的代码中没有提到。我想我会尝试这个算法!将回报哈哈。谢谢! – JChao 2015-02-24 22:22:01

+0

好的,仔细看后,可能不需要。我使用朴素贝叶斯多标称配合,它似乎是 {CLF = MultinomialNB() >>> clf.fit(X,Y) MultinomialNB(阿尔法= 1.0,class_prior =无,fit_prior =真) } 将完成这项工作(这是来自网站的示例)。我不太确定,但我觉得这个线程开始偏离原来的主题lol – JChao 2015-02-24 23:15:42

1

据我所知,问题是,您有一个列表,您想要对列表进行采样并保存索引以供将来使用。 请参阅:https://docs.python.org/2/library/random.html

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

希望这有助于

+0

谢谢,这解决了这个问题。虽然现在更多的问题出现了......另一个线程我去! – JChao 2015-02-25 00:54:21