按比例分割数据集
不多說,上代碼:
#-*- 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# 注意,使用時,默認最后一列是類別標簽 # 并且假定第0行開始就是數據集 def read_data_for_split(test_data='abalone.data',n=0,label=1):'''加載數據的功能n:特征數據起始位label:是否是監督樣本數據'''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:#有監督數據y_list.append(int(one_line[-1])) #標志位one_list=[o for o in one_line[n:-1]]x_list.append(one_list)else:#無監督數據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):'''按照指定的比例,劃分樣本數據集ratio: 測試數據的比率'''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數據集是:
https://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data
X_train和y_train是匹配的
X_test和y_test是匹配的。
注意,數據集第0欄不帶屬性名,第0行開始就是數據
如果數據集第0行是屬性名,那么代碼中的n要改成1
上述方法缺點:
csv中的數字讀入以后都變成了str類型,暫時不知道怎么解決
參考鏈接:
https://blog.csdn.net/together_cz/article/details/80001715
總結
- 上一篇: 提取字符串中的多个连续数字
- 下一篇: CCP(Cost complexity