分类、回归与聚类算法的使用
在使用scikit-learn之前,必须要牢记,scikit-learn中已经定义好了各个算法要使用的模型,在实际使用中,只需要直接按照scikit-learn的文档实例化相应的模型即可开始使用。如果模型不需要自己训练,可以使用scikit-learn中提供的预训练模型数据来直接进行预测,但是一般还是建议使用算法模型自行训练。
scikit-learn中的模型一般都具有两个方法:.fit()
和.predict()
或者.fit_predict()
,分别用于训练和预测。这就使得scikit-learn的模型使用非常简单。以支持向量机(SVM)下的SVC算法模型为例。
from sklearn import svm
from sklearn import datasets
clf = svm.SVC()
iris = datasets.load_iris()
x, y = iris.data, iris.target
clf.fit(x, y)
predict_y = clf.predict(unknown_x)
模型训练和预测所使用的数据可以是NumPy数组或者普通的数组,但训练数据和标签数据应该具有一个相同大小的维度。
在scikit-learn中有一个流水线(Pipeline)的概念,Pipeline可以用来整合数据处理流程,将数据从预处理到模型训练流水化,Pipeline定义在sklearn.pipeline
包中,构建时接受一个元组列表,其中包括全部处理步骤,元组的格式为(名称, 处理器实例)
,其中处理器(transform)需要实现.fit()
和.transform()
方法。Pipeline也拥有.fit()
、.predict()
等方法,在调用时会按照顺序链式调用列表中的全部处理器。Pipeline中列表的最后一项可以是一个评估器,用于支持Pipeline调用.score()
方法进行评估。
以下给出一个建立Pipeline的示例。
from sklearn.pipeline import Pipeline
text_clf = Pipeline([
('vect', CountVectorizer()),
('tfidf', TfidfTransformer()),
('clf', MultinomialNB())
])
text_clf.fit(train.data, train.target)