评估算法

评估算法

拟合:已知某函数的若干离散函数值,通过调整该函数中若干待定系数,使该函数与已知点集的差别(最小二乘意义)最小。

评估:估计算法在预测新数据能达到的程度。

四种不同的分离数据集的方法:

分离训练数据集和评估数据集

K折交叉验证分离

留一交叉验证分离

重复随机评估、训练数据集分离

² 分离训练数据集和评估数据集

简单地将原始数据集分为两部分,第一部分用来训练算法生成模型,第二部分通过模型来预测结果,并与已知的结果进行比较,来评估算法模型的准确度。通常将67%的数据作为训练集,将33%的数据作为评估数据集。

 

#分离训练数据集和评估数据集

#简洁、快速的数据分离技术,通常在具有大量数据、数据分布比较平衡的情况下非常有效

#将67%的数据作为训练集,将33%的数据作为评估训练集

from pandas import read_csv

from sklearn.model_selection import train_test_split

from sklearn.linear_model import LogisticRegression

 

#导入数据

filename = 'pima_data.csv'

names = ['preg','plas','pres','skin','test','mass','pedi','age','class']

data = read_csv(filename,names=names)

 

#将数据分为输入数据和输出结果

array = data.values

X = array[:,0:8]

y = array[:,8]

seed = 4

 

test_size = 0.33

X_train,X_test,Y_train,y_test = train_test_split(X,y,test_size=test_size,random_state = seed)

 

model = LogisticRegression()

model.fit(X_train,Y_train)

 

result = model.score(X_test,y_test)

print('算法评估结果:%.3f%%' %(result*100))

 

 

² K折交叉验证分离

K折交叉验证是将原始数据分成K组(一般是均分),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型,再用K个模型最终的验证集的分类准确率的平均数。K折交叉验证可以有效地避免过学习及欠学习状态的发生。通常情况下,K的取值为3、5、10.

 

#K折交叉验证分离,K的取值为10

from sklearn.model_selection import KFold

from sklearn.model_selection import cross_val_score

num_folds = 10

seed = 7

kfold = KFold(n_splits=10,random_state=seed)

 

model = LogisticRegression()

result = cross_val_score(model,X,y,cv=kfold)

print('算法评估结果:%.3f%%(%.3f%%)' %(result.mean()*100,result.std()*100))

² 留一交叉验证分离

留一交叉验证就是N-1交叉验证,即每个样本单独作为验证集,其余的N-1个样本作为训练集。

其优点:

最接近原始样本的样本,评估所得的结果比较可靠。

没有随机因素影响实验数据,确保实验过程可以被复制。

其缺点:

计算成本高,需要花费大量的时间完成算法的运算与评估。

 

#留一交叉

from sklearn.model_selection import LeaveOneOut

loocv = LeaveOneOut()

model = LogisticRegression()

result = cross_val_score(model,X,y,cv=loocv)

print('算法评估结果:%.3f%%(%.3f%%)' %(result.mean()*100,result.std()*100))

 

利用此方法计算出的标准方差和K折交叉验证的结果有较大的差距。

总结:

K折交叉验证是用来评估机器学习算法的黄金准则,不知道如何设定K值时,请将K值设为10.

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值