2015-02-24 52 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