python劃分訓練集和測試集

【第一種】方法
def splitData(data,seed,m,k):
#將數據分成訓練集和測試集,每次指定seed,更換K,重複M次,防止過擬合.
    test=[]
    train=[]
    #random.seed(seed),指定seed的話,每次後面的隨機數產生的都是一樣的順序
    np.random.seed(seed)
    for user,item in data.items():
        #隨機數產生順序一樣,隨機產生(0,m)之間的數,只有一個可以分給測試集,另外的m-1都分給訓練集
        if np.random.randint(0,m)==k:
            test.append([user,item])
        else:
            train.append([user,item])
    return test,train
test,train=splitData(data,5,7,5)
print(len(test))
print(len(train))
【結果】

【第二種劃分數據集方式】

直接調用sklearn包,簡直不要太方便,pip安裝下載就好了,如果缺少scipy包,用pip再安裝下載

完了,就直接調用train,test,train_label,test_lable=

train_test_split(ratings[['user_id','movies_id']],range(len(ratings)),test_size=7/8)

參數:數據集,數據集標籤,test_size的值如果介於0-1之間就是劃分比例,如果是整數就是樣本數

返回值:訓練集,訓練集標籤,測試集,測試集標籤

def splitData(data,seed,m,k):
#將數據分成訓練集和測試集,每次指定seed,更換K,重複M次,防止過擬合.
    test=[]
    train=[]
    #random.seed(seed),指定seed的話,每次後面的隨機數產生的都是一樣的順序
    np.random.seed(seed)
    for user,item in data.items():
        #隨機數產生順序一樣,隨機產生(0,m)之間的數,只有一個可以分給測試集,另外的m-1都分給訓練集
        if np.random.randint(0,m)==k:
            test.append([user,item])
        else:
            train.append([user,item])
    return test,train
test,train=splitData(data,5,7,5)
print(len(test))
print(len(train))

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章