按比例分割数据集
不多說,上代碼:
#-*- coding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') import numpy as np from sklearn.model_selection import train_test_split import csv# 注意,使用時(shí),默認(rèn)最后一列是類別標(biāo)簽 # 并且假定第0行開始就是數(shù)據(jù)集 def read_data_for_split(test_data='abalone.data',n=0,label=1):'''加載數(shù)據(jù)的功能n:特征數(shù)據(jù)起始位label:是否是監(jiān)督樣本數(shù)據(jù)'''csv_reader=csv.reader(open(test_data))data_list=[]for one_line in csv_reader:data_list.append(one_line)x_list=[]y_list=[]for one_line in data_list[n:]:if label==1:#有監(jiān)督數(shù)據(jù)y_list.append(int(one_line[-1])) #標(biāo)志位one_list=[o for o in one_line[n:-1]]x_list.append(one_list)else:#無監(jiān)督數(shù)據(jù)one_list=[float(o) for o in one_line[n:]]x_list.append(one_list)return x_list, y_listdef split_data(data_list, y_list, ratio=0.30):'''按照指定的比例,劃分樣本數(shù)據(jù)集ratio: 測試數(shù)據(jù)的比率'''X_train, X_test, y_train, y_test = train_test_split(data_list, y_list, test_size=ratio, random_state=50)print '--------------------------------split_data shape-----------------------------------'print len(X_train), len(y_train)print len(X_test), len(y_test)return X_train, X_test, y_train, y_testif __name__ == '__main__':x_list, y_list=read_data_for_split(test_data='abalone.data',n=0,label=1)X_train,X_test,y_train,y_test=split_data(x_list,y_list)print"X_train=",X_trainprint"*****************************************************************"print"X_test=",X_testprint"*****************************************************************"print"y_train=",y_trainprint"*****************************************************************"print"y_test=",y_test數(shù)據(jù)集是:
https://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data
X_train和y_train是匹配的
X_test和y_test是匹配的。
注意,數(shù)據(jù)集第0欄不帶屬性名,第0行開始就是數(shù)據(jù)
如果數(shù)據(jù)集第0行是屬性名,那么代碼中的n要改成1
上述方法缺點(diǎn):
csv中的數(shù)字讀入以后都變成了str類型,暫時(shí)不知道怎么解決
參考鏈接:
https://blog.csdn.net/together_cz/article/details/80001715
總結(jié)
- 上一篇: 提取字符串中的多个连续数字
- 下一篇: CCP(Cost complexity