机器学习算法性能测试
在机器学习中我们训练出来一个模型,其准确性还未得到验证情况下,不能直接的在真实的环境里面去使用。
下面是几个解决办法
训练和测试数据集的分离
将一个数据集分离出来训练集和测试集,先使用训练集去训练模型,之后再使用测试数据集去验证训练出来的模型的准确度。
手写(了解\(skleran\)实现的原理)
- 数据分割
# 数据集分割
import numpy as np
def train_data_split(data_x, data_y, test_radio, seed=None):
assert data_x.shape[0] == data_y.shape[0], \
"size of x must be equal to the size of y"
assert 0.0 <= test_radio <= 1.0, \
"test radio must be valid"
if seed:
np.random.seed(seed)
shuffle_index = np.random.permutation(len(data_x))
test_size = int(len(data_x) * test_radio)
test_index = shuffle_index[:test_size]
train_index = shuffle_index[test_size:]
# 训练集
x_train = data_x[train_index]
y_train = data_y[train_index]
# 测试集
x_test = data_x[test_index]
y_test = data_y[test_index]
return x_train, x_test, y_train, y_test
- 数据训练和验证
- 使用测试的算法是分类算法之KNN算法里面实现的KNN
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from KNN import KNN_Classifier
from encapsulation_tools.data_split import train_data_split
iris = datasets.load_iris()
x = iris.data
y = iris.target
for i in range(5):
# 分离数据集
x_train, x_test, y_train, y_test = train_data_split(x, y, 0.2)
# 开始结果验证
clf = KNN_Classifier(3)
clf.fit(x_train, y_train)
y_pre = clf.predict(x_test)
print("第%d次预测预测准确率为:%.5f%%" % (i+1,sum(y_pre == y_test) / len(y_test) * 100))
- 测试结果
第1次预测预测准确率为:96.66667%
第2次预测预测准确率为:96.66667%
第3次预测预测准确率为:96.66667%
第4次预测预测准确率为:93.33333%
第5次预测预测准确率为:93.33333%
直接使用\(sklearn\)里面的模块
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
digits = datasets.load_digits()
x = digits.data
y = digits.target
for i in range(5):
x_train, x_test, y_train, y_test = train_test_split(x, y)
cls = KNeighborsClassifier(3)
cls.fit(x_train, y_train)
print("第%d次预测预测准确率为:%.5f%%" % (i+1, cls.score(x_test, y_test) * 100))
- 测试结果
第1次预测预测准确率为:98.22222%
第2次预测预测准确率为:98.66667%
第3次预测预测准确率为:98.44444%
第4次预测预测准确率为:98.66667%
第5次预测预测准确率为:99.11111%
本文来自博客园,作者:肆月初陸丶,转载请注明原文链接:https://www.cnblogs.com/zarttic/p/16581650.html