《机器学习》习题2-2
数据集包括100个样本 其2的期望中正例反例各一半 假定学习算法所产生的模型是将新样本预测为训练样本数较多的类别 给出用10折交叉验证法对错误率进行评估的结果。
分析
所抽取的训练集会有正例反例各占一半 利用十折交叉验证抽到的样本正反例概率一致 错误率的期望是0.5。
#由于本人是非计算机专业本科生 代码粗糙也可能运行起来会有问题 仅供参考 代码有误还望指出~
##10折交叉验证法 from sklearn.datasets import make_blobs from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.datasets import load_iris %matplotlib inline ##创建一个合成数据集 X, Y make_blobs(n_features 2,n_samples 100,centers 2,random_state 0) ##此处n_features表示 X具备特征数为2 样本个数100;centers表示y只有0或1 center 2 ,维数为100 ##n_features表示每一个样本有多少特征值 ##n_samples表示样本的个数 ##centers是聚类中心点的个数 可以理解为label的种类数 ##random_state是随机种子 可以固定生成的数据,0_state,默认不固定 ##cluster_std设置每个类别的方差 print (X.shape) print (Y.shape) print (X) print (Y) from sklearn.model_selection import KFold KF KFold(n_splits 10) for train_index, test_index in KF.split(X): print( TRAIN , train_index, TEST , test_index) X_train, X_test X[train_index], Y[test_index] Y_train, Y_test Y[train_index], Y[test_index] print( 对于数据X训练数据: , X_train) print( 对于数据X测试数据: , X_test) print( 对于数据Y训练数据: , Y_train) print( 对于数据Y测试数据: , Y_test) print( KF.get_n_splits(X))#K ##p显示所有的训练组和测试组 from sklearn.model_selection import cross_val_score from sklearn.datasets import load_iris from sklearn.linear_model import LogisticRegression from sklearn import datasets, svm SVC svm.SVC() ##设定惩罚参数 默认1.0 scores cross_val_score(SVC, X, Y, cv 10, scoring accuracy ) print(scores) #estimator:估计方法对象(分类器) #X 数据特征(Features) #y 数据标签(Labels) #cv 几折交叉验证 #n_jobs 同时工作的cpu个数 -1代表全部 print(scores.mean()) ##用。mean()求scores内的平均值



