python+sklearn数据集的划分

本文所用文件的链接

链接:https://pan.baidu.com/s/1RWNVHuXMQleOrEi5vig_bQ
提取码:p57s

数据集的划分

  在机器学习的训练中,数据集的划分是非常重要的,机器学习在有监督的学习中,要将数据集分成训练集,验证集和测试集,训练集的作用是用来第一步训练的,验证集是在训练过程中展示当前模型的训练效果的,测试集是用来检测最终训练结果的。
  对于分类问题训练集和测试集的划分不应该用整个样本空间的特定百分比作为训练数据, 而应该在其每一个类别的样本中抽取特定百分比作为训练数据. 最终提高分类的可信度.

sklearn提供了数据集划分的相关API:

import sklearn.model_selection as ms
# 训练集测试集划分
ms.train_test_split(
    输入集, 输出集, 
	test_size=测试集占比,
	random_state=7
)
返回: train_x, test_x, train_y, test_y

案例:按比例划分数据集

"""
训练集测试集划分
"""
import numpy as np
import sklearn.naive_bayes as nb
import matplotlib.pyplot as mp
import sklearn.model_selection as ms

data = np.loadtxt('../ml_data/multiple1.txt', 
	unpack=False, delimiter=',')
print(data.shape, data.dtype)
# 获取输入与输出
x = np.array(data[:, :-1])
y = np.array(data[:, -1])

# 绘制这些点, 点的颜色即是点的类别
mp.figure('Naive Bayes', facecolor='lightgray')
mp.title('Naive Bayes', fontsize=16)
mp.xlabel('X', fontsize=14)
mp.ylabel('Y', fontsize=14)
mp.tick_params(labelsize=10)

# 训练集测试集划分
train_x, test_x, train_y, test_y = \
	ms.train_test_split(
	x, y, test_size=0.25, random_state=7)

# 通过训练样本,训练朴素贝叶斯分类模型
model = nb.GaussianNB()
model.fit(train_x, train_y)
# 对测试样本进行预测, 输出预测精确度
pred_test_y = model.predict(test_x)
# 精确度 = 预测正确的个数/总个数
print((test_y==pred_test_y).sum()/test_y.size)


# 绘制分类边界线
l, r = x[:, 0].min()-1, x[:, 0].max()+1
b, t = x[:, 1].min()-1, x[:, 1].max()+1
n = 500
grid_x, grid_y = np.meshgrid(
	np.linspace(l, r, n),
	np.linspace(b, t, n))
mesh_x = np.column_stack(
	(grid_x.ravel(), grid_y.ravel()))
pred_mesh_y = model.predict(mesh_x)
grid_z = pred_mesh_y.reshape(grid_x.shape)
mp.pcolormesh(grid_x,grid_y,grid_z,cmap='gray')

mp.scatter(test_x[:,0], test_x[:,1], s=60, 
	c=test_y, cmap='jet', label='Train Points')
mp.legend()
mp.show()
(400, 3) float64
CV Accuracy: [1.         1.         1.         1.         0.98305085]
0.99

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值