训练数据和测试数据的划分
程序员文章站
2022-06-01 16:23:26
...
训练数据和测试数据的划分
为什么要将数据分成两部分?
假如直接通过大量的训练数据得到我们想要的模型,并且将这个模型直接放在真实环境中使用。但是这样做就会产生很多问题。
1,模型的性能很差。
2,在真实的环境中可能很难拿到数据的真实的label,比如银行客户的信誉,是需要大量的数据才能得到的。
其实在实际环境中,我们是用已经做好的模型去预测真实的数据,这个模型的性能是需要提前经过大量的数据去测试它的性能是怎么样的。那么如何测试这个模型的性能呢?
改进方法如下:
将大量的数据按照比列分成训练数据和测试数据,再用得到的模型对测试数据进行预测并且得到一组预测数据,最后将测试数据与预测数据进行对比,得到的正确率就是这个模型的性能表现了。为什么拿测试数据进行对比,因为测试数据的label都是真实的,这样做有利用得到跟真事的数据。
封装函数如下:
# 将数据X和标签y按照test_ratio分割成X_train和X_test,y_train,y_test
def train_test_split(X,y,test_ratio = 0.2,seed = None):
"""检查数据和标签是否匹配,检查比列数是否合法"""
assert X.shape[0] == y.shape[0]
assert 0 <= test_ratio <= 1
# 种下随机种子
if seed:
np.random.seed(seed)
# 将索引打乱,按照比例提取训练数据集索引和测试数据集索引
shuffled_indexes = np.random.permutation(len(X))
test_size = int(len(X) * test_ratio)
test_indexes = shuffled_indexes[:test_size]
train_indexes = shuffled_indexes[test_size:]
# 根据索引提取出测试数据和训练数据
X_train = X[train_indexes]
y_train = y[train_indexes]
X_test = X[test_indexes]
y_test = y[test_indexes]
return X_train,y_train,X_test,y_test
原文链接:https://blog.csdn.net/qq_33531400/article/details/83823974
推荐阅读
-
mysql中迅速插入百万条测试数据的方法
-
MySQL数据库备份和还原的常用命令小结
-
Hibernate中使用HQLQuery查询全部数据和部分数据的方法实例
-
Android中Activity和Fragment传递数据的两种方式
-
mysql ndb集群备份数据库和还原数据库的方法
-
在ASP.NET 2.0中操作数据之十:使用 GridView和DetailView实现的主/从报表
-
ios获取数据之encodeURI和decodeURI的实例
-
在ASP.NET 2.0中操作数据之三十:格式化DataList和Repeater的数据
-
在ASP.NET 2.0中操作数据之三十三:基于DataList和Repeater使用DropDownList过滤的主/从报表
-
Mysql数据库名和表名在不同系统下的大小写敏感问题