本文涉及到
1. 模型持久化的两种方式
2. 读入数据时对dtype进行转换
3. 再次训练和更新参数
4. 多分类和多标签拟合,如何将标签转换成二维数组等#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 18/3/27 上午11:48
# @Author : cicada@hole
# @File : ModueChooser.py
# @Desc :
# @Link :
# 5月15日 重新学习
# 1. module持久化 Python 的内置持久化模块(即 pickle )将模型保存
from sklearn import svm
from sklearn import datasets
import pickle
def modulePersistence():
clf = svm.SVC()
iris = datasets.load_iris()
X, y = iris.data, iris.target
clf.fit(X, y)
# --- 使用 pickle持久化
s = pickle.dumps(clf) # 将模型持久化
clf2 = pickle.loads(s)
print(clf2.predict(X[0:1]),y[0])
# --- 使用joblib持久化到硬盘
from sklearn.externals import joblib
joblib.dump(clf,'filename.pkl') # 持久化到模型
clf = joblib.load('filename.pkl')
print(clf)
'''
读数据时类型转换
'''
import numpy as np
from sklearn import random_projection
def changeType():
rng = np.random.RandomState(0)
X = rng.rand(10,2000)
X = np.array(X, dtype='float32')
print(X.dtype) # 原来的type 一般都会被转换为float 64
transformer = random_projection.GaussianRandomProjection()
X_new = transformer.fit_transform(X)
print(X_new.dtype)
'''
再次训练和更新参数
'''
import numpy as np
from sklearn.svm import SVC
def updateParams():
rng = np.random.RandomState(0)
X = rng.rand(100,10) # 100行10列
y = rng.binomial(1, 0.5, 100) # 二项分布, n,p size
X_test = rng.rand(5,10)
# print(X,y,X_test)
clf = SVC()
clf.set_params(kernel='linear').fit(X,y)
print(clf.predict(X_test))
clf.set_params(kernel='rbf').fit(X, y)
print(clf.predict(X_test))
'''
多分类与多标签拟合
'''
def multiClf():
from sklearn.svm import SVC
from sklearn.multiclass import OneVsRestClassifier
from sklearn.preprocessing import LabelBinarizer
X = [[1, 2], [2, 4], [4, 5], [3, 2], [3, 1]]
y = [0, 0, 1, 1, 2]
clf = OneVsRestClassifier(estimator=SVC(random_state=0))
print(clf.fit(X,y).predict(X))
# 标签二值化可以转换为一个二维数组来表示,比如 0,1,2 可以转换为[1,0,0][0,1,0][0,0,1]
y = LabelBinarizer().fit_transform(y)
print(clf.fit(X, y).predict(X))
if __name__ == '__main__':
# modulePersistence() # module持久化,pickle和joblib两种方式
# changeType() # 对读入数据集的dtype进行改变
# updateParams() # 更新参数,然后继续训练
multiClf() # 多分类和多标签拟合,将标签转换成二维数组等