# encoding=utf-8
import joblib
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
iris = datasets.load_iris()
print('数据结构: {}'.format(iris.data.shape))
# 属性 - 数据
iris_X = iris.data
# 类别 - 结果
iris_Y = iris.target
# 划分测试集和训练集
iris_train_x, iris_test_x, iris_train_y, iris_test_y = train_test_split(iris_X, iris_Y, test_size=0.2, random_state=0)
# 分类器初始化
knn = KNeighborsClassifier()
# 对训练集进行训练
knn.fit(iris_train_x, iris_train_y)
# 预测
predict_result = knn.predict(iris_test_x)
print('测试集大小:{}'.format(iris_test_x.shape))
print('真实结果: {}'.format(iris_test_y))
print('预测结果: {}'.format(predict_result))
# 准确率
knn_score = knn.score(iris_test_x, iris_test_y)
print('预测准确率: {}'.format(knn_score))
# 保存训练模型
model_name = 'knn_train_model.m'
joblib.dump(knn, model_name)
print('*' * 80)
# 加载模型
knn_model = joblib.load(model_name)
# 预测结果
predict_result = knn_model.predict(iris_test_x[0:1])
print('测试数据: {}'.format(iris_test_x[0:1][0]))
print('真实结果: {}'.format(iris_test_y[0]))
print('预测结果: {}'.format(predict_result[0]))
输出:
数据结构: (150, 4)
测试集大小:(30, 4)
真实结果: [2 1 0 2 0 2 0 1 1 1 2 1 1 1 1 0 1 1 0 0 2 1 0 0 2 0 0 1 1 0]
预测结果: [2 1 0 2 0 2 0 1 1 1 2 1 1 1 2 0 1 1 0 0 2 1 0 0 2 0 0 1 1 0]
预测准确率: 0.9666666666666667
********************************************************************************
测试数据: [5.8 2.8 5.1 2.4]
真实结果: 2
预测结果: 2