机器学习算法性能测试

在机器学习中我们训练出来一个模型,其准确性还未得到验证情况下,不能直接的在真实的环境里面去使用。
下面是几个解决办法

训练和测试数据集的分离

将一个数据集分离出来训练集和测试集,先使用训练集去训练模型,之后再使用测试数据集去验证训练出来的模型的准确度。

手写(了解\(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
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%
posted @ 2022-08-14 14:41  肆月初陸丶  阅读(174)  评论(0)    收藏  举报