本博客所有内容均整理自《Python数据科学手册》,欢迎讨论交流~
Scikit-Learn评估器API的基本步骤为如下五步:
- 从Scikit-Learn中导入适当的评估器类,选择模型类
- 用合适的数值对模型类进行实例化,配置模型超参数
- 整理数据,获取特征矩阵和目标数组
- 调用模型实例的fit()方法对数据进行拟合
- 对新数据应用模型:
- 在监督学习模型中,通常使用predict()方法预测新数据的标签
- 在无监督学习模型中,通常使用transform()或predict()方法转换或推测数据的性质
遵循这五个步骤,我们就可以获得一个有效的机器学习模型,并将该模型应用到新数据上去预测。在这五个步骤中,有效使用各种机器学习工具和技术的最重要阶段是前两步——模型选择和超参数选择。为了做出最正确的选择,我们需要一种方式来验证选中的模型和超参数是否可以很好地拟合数据,因此模型验证和超参数验证将非常重要。
模型验证(model validation)就是在选择好模型和超参数之后,通过对训练集数据进行学习,获得模型对已知数据的预测值,将这些预测值和已知实际值进行对比。
在这里我主要介绍两种模型验证方法,一种称为留出集(holdout set)方法,另一种称为交叉检验(cross-validation)方法。
1. 模型验证方法:留出集
留出集方法指的是先从训练模型的数据中留出一部分不做训练,待训练结束后用这部分留出来的数据来检验训练获得的模型的性能。在Scikit-Learn中用train_test_split工具就可以实现。下面我们举一个简单的示例:
#加载鸢尾花数据
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
#使用k近邻分类模型
from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier(n_neighbors=1)
model.fit(X, y)
y_model = model.predict(X)
from sklearn.metrics import accuracy_score
accuracy_score(y, y_model)
#使用留出集
from sklearn.cross_validation import