train_test_split 对于数据处理是非常重要的,对于建立模型时验证模型得准确性是非常重要的。不过实现起来还是非常简单的。
话的不说了,上代码。
import numpy as np
from sklearn.datasets import load_iris
def myself_split(test_ratio,X,Y):
# X表示特征值,Y表示目标值
# 自实现test_train_split
shuffle_index = np.random.permutation(len(X)) #将随机生成len(X)个元素的下标即0-149随机生成,并保存在数据中
#print(shuffle_index)
#test_ratio = 0.2 # 测试集占总数据集的大小
test_size = int(len(X)*test_ratio) # 算出个数
test_index = shuffle_index[:test_size] #测试集
train_index = shuffle_index[test_size:] # 训练集
#print(test_index)
X_train = X[train_index] # 训练集的特征值
# print(X_train)
Y_train = Y[train_index] # 训练集的目标值
X_test = X[test_index] #测试集的特征值
#print(X_test)
Y_test = Y[test_index] #测试集的目标值
return X_train,X_test,Y_train,Y_test
def main():
iris = load_iris()
X = iris.data #特征值
Y = iris.target # 目标值
X_train, X_test, Y_train, Y_test = myself_split(test_ratio=0.2,X=X,Y=Y)
print(X_train.shape)
print(Y_train.shape)
print(X_test.shape)
print(Y_test.shape)
if __name__ == '__main__':
main()