不好意思,不知道是不是我的表达有问题,我在这里似乎找不到任何与我的问题相似的东西。
我有一个二维列表,每行代表一个案例,每列代表一个特征(用于机器学习)。此外,我还有一个单独的列表(列)作为标签。
我想从二维列表中随机选择行来训练分类器,并使用剩余的行来测试准确性。因此,我需要知道所有用于训练的行的索引,以避免重复使用。
我认为这个问题可以分为两部分:1)如何随机选择;2)如何获取索引。
我再次不知道为什么在这里搜索不到好的信息(可能是我太笨了)。
抱歉我还是社区的新手,所以可能犯了很多格式错误。如果您有任何建议,请告诉我。
这是我用来获取二维列表的代码部分
#273 = 案例数量feature_list=[[0]*len(mega_list)]*273#创建计数器以便稍后使用索引link_count=0feature_count=0#print len(mega_list)for link in url_list[:-1]: #设置URL samp_url='http://www.mtsamples.com'+link samp_url = "%20".join( samp_url.split() ) #使用关键词进行解析 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
回答:
我建议将数据存储在pandas数据框中,而不是二维列表。如果我理解你的数据正确,你可以这样做:
import pandas as pddf = pd.DataFrame(feature_list, columns = mega_list)
我没有看到提到任何因变量,但我假设你有一个,因为你提到了分类算法。如果你的因变量称为”Y”,并且是以列表格式存储,其索引与你的特征对齐,那么这段代码将对你有用:
from sklearn import cross_validationx_train, x_test, y_train, y_test = cross_validation.train_test_split( df, Y, test_size=0.8, random_state=0)