import pickle
#pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议
import xgboost as xgb
import numpy as np
from sklearn.model_selection import KFold,train_test_split,GridSearchCV
#KFold折交叉验证.
#train_test_split函数用于将矩阵随机划分为训练子集和测试子集,
#并返回划分好的训练集测试集样本和训练集测试集标签.
#gridSearchCV网格搜索
from sklearn.metrics import confusion_matrix,mean_squared_error
"""
confusion_matrix混淆矩阵
mean_squared_error均方误差
"""
from sklearn.datasets import load_iris,load_digits,load_boston
"""
load_digits手写字体数据集
"""
from sklearn.datasets import load_iris
rng=np.random.RandomState(31337)
"""
#numpy.random.RandomState()是一个伪随机数生成器。
#伪随机数是用确定性的算法计算出来的似来自[0,1]均匀分布的随机数序列。
# 并不真正的随机,但具有类似于随机数的统计特征,如均匀性、独立性等。
print("rng=",rng)
rng= RandomState(MT19937)
MT19937高质量的伪随机数
https://blog.csdn.net/caimouse/article/details/55668071
"""
print("Zeros and Ones from the Digits dataset:binary classification")
digits=load_digits(5)
y=digits['target']
X=digits['data']
kf=KFold(n_splits=5,shuffle=True,random_state=rng)
"""
n_splits:表示划分几等份
shuffle:在每次划分时,是否进行洗牌
若为Falses时,其效果等同于random_state等于整数,每次划分的结果相同
若为True时,每次划分的结果都不一样,表示经过洗牌,随机取样的
random_state:随机种子数
"""
for train_index,test_index in kf.split(X):
xgb_model=xgb.XGBClassifier().fit(X[train_index],y[train_index])
predictions=xgb_model.predict(X[test_index])
actuals=y[test_index]
print("confusion matrix")
print(confusion_matrix(actuals,predictions))
Zeros and Ones from the Digits dataset:binary classification
confusion matrix
[[36 0 0 0 2]
[ 0 38 0 0 0]
[ 0 1 30 0 0]
[ 0 0 0 35 0]
[ 0 0 0 0 39]]
confusion matrix
[[30 0 0 0 0]
[ 0 32 0 1 0]
[ 0 0 44 0 0]
[ 0 0 0 37 0]
[ 0 0 0 0 36]]
confusion matrix
[[39 0 0 0 0]
[ 0 33 0 0 0]
[ 0 0 26 0 0]
[ 0 1 1 45 0]
[ 0 0 0 0 35]]
confusion matrix
[[33 0 0 0 0]
[ 0 37 0 0 0]
[ 0 0 37 0 0]
[ 0 0 0 36 0]
[ 0 0 0 0 37]]
confusion matrix
[[38 0 0 0 0]
[ 1 40 0 0 0]
[ 1 0 38 0 0]
[ 0 0 0 28 0]
[ 0 0 0 0 34]]