【python机器学习】模型评估的基本方法

交叉验证
对于一个模型进行评估,需要用没有训练过的数据来进行测试,常见的方法比如将数据分为训练集和测试集,他有两个缺点,一是选出的测试集与训练集高度依赖,二是训练的时候没有用到所有的可用的数据。为了避免这些缺陷,采用k-fold交叉验证。将数据分成k组,每次训练k-1个组,剩下的当作测试集,如此循环k次。

digits = datasets.load_digits()# 下载手写数据集
features = digits.data
target = digits.target
standardizer = StandardScaler()# 预处理,归一化
logit = LogisticRegression()# 逻辑回归
pipeline = make_pipeline(standardizer, logit)# 创建管道
kf = KFold(n_splits=10, shuffle=True, random_state=1)
cv_results = cross_val_score(pipeline,
                             features,
                             target,
                             cv=kf,
                             scoring="accuracy",
                             n_jobs=-1)# n_jobs是同时工作的cpu个数(-1代表全部)
print(cv_results.mean())

创建基线回归模型

boston = load_boston()
features, target = boston.data, boston.target

features_train, features_test, target_train, target_test = train_test_split(features, target, random_state=0)
dummy = DummyRegressor(strategy='mean')
dummy.fit(features_train, target_train)
print(dummy.score(features_test, target_test))

可以将上述结果与普通的线性回归对比,看二者的分数。
基线回归的分类模型
与随机的分类预测对比。注意分层的预测与训练集的目标向量的类比例成正比
以及归一化将在不同的类别之间随机统一地生成预测。

boston = load_iris()# 换成鸢尾花用于分类
features, target = boston.data, boston.target
features_train, features_test, target_train, target_test = train_test_split(features, target, random_state=0)
dummy = DummyClassifier(strategy='uniform', random_state=1)
dummy.fit(features_train, target_train)
print(dummy.score(features_test, target_test))

模型表现
常用accuracy、precision、recall和F1来表征模型的表现。
a c c u r a c y = T P + T N T P + T N + F P + F N accuracy = \frac{TP+TN}{TP+TN+FP+FN} accuracy=TP+TN+FP+FNTP+TN
T、F代表正确或错误,P、N代表积极或消极。然而数据常常是不平衡类,有时候模型仅仅靠accuracy不能预测任何东西。
而precision假设预测中有噪声,预测为积极可能为消极。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值