交叉验证
对于一个模型进行评估,需要用没有训练过的数据来进行测试,常见的方法比如将数据分为训练集和测试集,他有两个缺点,一是选出的测试集与训练集高度依赖,二是训练的时候没有用到所有的可用的数据。为了避免这些缺陷,采用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假设预测中有噪声,预测为积极可能为消极。

最低0.47元/天 解锁文章

1153

被折叠的 条评论
为什么被折叠?



