Python下的机器学习工具scikit-learn(学习笔记2--官方实例程序)

来源:互联网 发布:linux cp 排除文件夹 编辑:程序博客网 时间:2024/04/30 13:44

本文参考官方网站:http://scikit-learn.org/stable/tutorial/basic/tutorial.html

scikit-learn工具包自带一些标准数据集(包括iris和digits两个数据集),可以进行测试。

(1)首先导入模块数据集:

from sklearn import datasetsiris = datasets.load_iris()digits = datasets.load_digits()

导入的一个数据集包含数据和数据集的一些元数据(用于描述数据),数据集中.data成员中保存着一个N个样本,N个特征的2维数据,而需要进行预测的目标变量保存在.target成员中,它是一个一维的变量,每个样本对应个标签。

例如在digits数据中,.data每一行对应一个样本数据,每一列表示一个特征:

>>> print digits.data  [[  0.   0.   5. ...,   0.   0.   0.] [  0.   0.   0. ...,  10.   0.   0.] [  0.   0.   0. ...,  16.   9.   0.] ..., [  0.   0.   1. ...,   6.   0.   0.] [  0.   0.   2. ...,  12.   0.   0.] [  0.   0.  10. ...,  12.   1.   0.]]

.target数据的每个元素对应一个样本数据(个数相等):

>>> digits.targetarray([0, 1, 2, ..., 8, 9, 8])
>>> len(digits.target) == len(digits.data)True

 

(2)模型学习和预测:

在scikit-learn中,一个分类问题的评估器(estimator)是通过fit(X,y)方法和predict(T)两个方法来实现的。

在下面的示例中estimator是sklearn.svm.SVC,它实现了支持向量机分类器SVC(support vector classification),estimator构造函数的参数是对应模型的相关参数(如下例子中的gamma=0.001, C=100.为svm模型的参数),最开始我们可以把estimator看成一个黑箱。

>>> from sklearn import svm>>> clf = svm.SVC(gamma=0.001, C=100.)

训练SVC模型如下:

>>> clf.fit(digits.data[:-1], digits.target[:-1])  SVC(C=100.0, cache_size=200, class_weight=None, coef0=0.0, degree=3,  gamma=0.001, kernel='rbf', max_iter=-1, probability=False, shrinking=True,  tol=0.001, verbose=False)

用训练好的SVC模型对数据进行预测:

>>> clf.predict(digits.data[-1])array([8])

 

(3)模型持久化

我们可以用pickle模块dumps和loads把训练得到的模型数据持久化到字符串中:

>>> 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)  SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0,  kernel='rbf', max_iter=-1, probability=False, shrinking=True, tol=0.001,  verbose=False)>>> import pickle>>> s = pickle.dumps(clf)>>> clf2 = pickle.loads(s)>>> clf2.predict(X[0])array([0])>>> y[0]0


当数据量比较大时,我们更希望把模型持久化的形式保存在磁盘文件中,而不是以字符串(string)的形式保存在内存中:

>>> from sklearn.externals import joblib>>> joblib.dump(clf, 'filename.pkl')



 

 

原创粉丝点击