如何获取列表中随机选择的行的索引 (Python)
How to get the indices for randomly selected rows in a list (Python)
好吧,我不知道是我措辞不当还是什么,但我似乎无法在这里找到任何类似的问题。
所以我有一个二维列表,每一行代表一个案例,每一列代表一个特征(用于机器学习)。另外,我有一个单独的列表(列)作为标签。
我想随机 select 二维列表中的行来训练分类器,同时使用其余行来测试准确性。因此,我希望能够知道我用于训练的所有行的索引以避免重复。
我认为问题有两部分:
1) 如何随机 select
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
据我了解,您有一个列表,您想要对列表进行抽样并保存索引以备将来使用。
参见:https://docs.python.org/2/library/random.html
你可以做一个 random.sample(xrange(sizeoflist),sizeofsample) 这将 return 你的样本的索引。然后,您可以使用该样本进行训练并跳过它们(或花哨并进行设置差异)以进行验证。
希望对您有所帮助
我会将数据存储在 pandas 数据框中而不是二维列表中。如果我正确理解你的数据,你可以这样做:
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)
好吧,我不知道是我措辞不当还是什么,但我似乎无法在这里找到任何类似的问题。
所以我有一个二维列表,每一行代表一个案例,每一列代表一个特征(用于机器学习)。另外,我有一个单独的列表(列)作为标签。
我想随机 select 二维列表中的行来训练分类器,同时使用其余行来测试准确性。因此,我希望能够知道我用于训练的所有行的索引以避免重复。
我认为问题有两部分: 1) 如何随机 select 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
据我了解,您有一个列表,您想要对列表进行抽样并保存索引以备将来使用。 参见:https://docs.python.org/2/library/random.html
你可以做一个 random.sample(xrange(sizeoflist),sizeofsample) 这将 return 你的样本的索引。然后,您可以使用该样本进行训练并跳过它们(或花哨并进行设置差异)以进行验证。
希望对您有所帮助
我会将数据存储在 pandas 数据框中而不是二维列表中。如果我正确理解你的数据,你可以这样做:
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)