研究机器学习的最终目的还是要应用到实际场景,和所有的方法一样,它也有一个固定的“套路”或者说“流程”。
套路第一步——收集数据
这里收集的数据是训练数据(training data),包括特征数据(feature)和标签(label)。
这个阶段可以细分为几个小的步骤:
选择数据(Selecting Data):考虑现在有什么数据,缺什么数据,要删除什么数据;
数据预处理(Preprocess Data):对数据进行格式化、清理和抽样(如果必要的话)
数据转换(Transform Data):对属性或特征进行分解、聚合、同一化。
这个阶段中,经常要借助可视化的工具来观察数据的特点。
套路第二步——训练模型
对于单纯应用机器学习的开发者而言,训练模型实际上是调用已有的机器学习库或机器学习框架提供的模型。对于绝大多数的分类问题而言,训练模型本身就是创建一个分类器(Classifer)并且使用训练数据对这个分类器进行训练。
在scikit-learn中,这个过程甚至可以简化到两条语句就能完成:
clf = GaussianNB()
clf.fit(features_train, labels_train)
为了让训练后的模型可以更实用一些(术语叫泛化Generalization),我们在这个过程还需要对模型进行评估,达到一定的精度后才能投入使用。
pred = clf.predict(features_test)
precision_score(labels_test, pred, average='binary')
复杂的神级网络模型需要考虑模型选择的一些细节,如激活函数、初始的权重、超参数、网络结构。需要不断重复这个阶段的某些操作。但本质上,它仍然可以对外保持非常简单的接口。
套路第三步——做出预测
训练好模型就可以拿出来“显摆”了。这时候给模型输入的就是真实的数据,是训练过程中模型没有见过的数据,然后我们得到模型判断的结果。
pred = clf.predict(features_new)
这个结果的可信程度依赖于模型的精度、训练数据的质量、问题的复杂程度。但无论怎样,从套路的角度看,它本身就是一个简单的执行预测的过程。
参考资料:
1. How to Prepare Data For Machine Learning(https://machinelearningmastery.com/how-to-prepare-data-for-machine-learning/)
2. Machine Learning Recipes by Josh Gordon
领取专属 10元无门槛券
私享最新 技术干货