1.机器学习之(3)train-test-split进行算法性能测试

将数据集进行test和train划分的意义

如果将所有的数据都作为训练数集,那么我们训练完模型就无从验证,将没有验证过的模型直接用于实际环境中,那么效果不一定理想,好坏只能听天由命,那么有什么办法能在实际应用我们的机器学习算法之前就大概能知道我们的算法能不能适用到实际环境呢?答案是对手里的数据进行test和train的划分,训练完模型后就用test数据进行测试。根据测试结果决定对模型的后续操作!

python代码原理基础实现

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets

我们使用sklearn中的数据集iris数据

iris = datasets.load_iris()
X = iris.data
y = iris.target

iris数据是按照类别排列好很规整的一个数据集,所以我们在做数据划分之前需要将其随机打乱,我们选择打乱数据的索引

shuffle_indexes = np.random.permutation(len(X))

选定test:train为1:4

test_ratio = 0.2
test_size = int(len(X) * test_ratio)

得到test数据集的索引集合train数据集的索引集

test_indexes = shuffle_indexes[:test_size]
train_indexes = shuffle_indexes[test_size:]

根据打乱的索引得到训练数据和测试数据

X_train = X[train_indexes]
y_train = y[train_indexes]

X_test = X[test_indexes]
y_test = y[test_indexes]

以上为数据划分的原理和python代码实现,其实sklearn中是有直接能用的函数的

下面使用sklearn中的train-test-split和kNN分类器完成训练和测试

from sklearn.model_selection import train_test_split
X_trian, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=666)

其中test_size代表测试集划分比例,random_state的值如果给了,那么函数实现内部中的随机操作每一次的结果都是一样的

接下来调用kNN分类器完成分类

from sklearn.neighbors import KNeighborsClassifier
kNN_classifier = KNeighborsClassifier(n_neighbors=3)

kNN_classifier.fit(X_train,y_train)

y_predict = kNN_classifier.predict(X_test)

sum(y_predict==y_test)/len(y_test)

最后输出预测精度。

是不是很简单!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值