模型保存与加载

pickle

>>> import pickle
>>> s = pickle.dumps(clf)  # clf是模型对象
>>> clf2 = pickle.loads(s)
>>> clf2.predict(X[0:1])

joblib

在某些情况,可以使用joblib来代替pickle,,特别是对一些大的数据

>>> from joblib import dump, load
>>> dump(clf, 'filename.joblib') 
>>> clf = load('filename.joblib') 

设置超参

clf = SVC()  #实例化
clf.set_params(kernel='linear').fit(X, y)  # 实例化后,可以修改超参,进行训练
clf.set_params(kernel='rbf', gamma='scale').fit(X, y)   # 训练后可以再修改超参,然后再进行训练

标签处理

fit训练时使用的是哪种类型的标签,预测就会使用对应的类型输出标签。

预测时模型可能输出全为0的结果,表示该样本不属于任何类别

情况1:多类别 标签 one-hot 化:LabelBinarizer

from sklearn.preprocessing import LabelBinarizer
y = [0, 0, 1, 3, 1, 2]
y = LabelBinarizer().fit_transform(y)
print y

###################################

[[1 0 0 0]
 [1 0 0 0]
 [0 1 0 0]
 [0 0 0 1]
 [0 1 0 0]
 [0 0 1 0]]

情况2:多标签 ,每个样本属于多个类别的请情况,使用MultiLabelBinarizer

from sklearn.preprocessing import MultiLabelBinarizer
y = [[0, 1], [0, 2], [1, 3], [0, 2, 3], [2, 4]] # 每个样本的标签可能有2-3个
y = MultiLabelBinarizer().fit_transform(y)
print y
classif.fit(X, y).predict(X)

###################################

[[1 1 0 0 0]
 [1 0 1 0 0]
 [0 1 0 1 0]
 [1 0 1 1 0]
 [0 0 1 0 1]]

array([[1, 1, 0, 0, 0],
       [1, 0, 1, 0, 0],
       [0, 1, 0, 1, 0],
       [1, 0, 1, 0, 0],
       [1, 0, 1, 0, 0]])

获取超参

>>> estimator = Estimator(param1=1, param2=2)
>>> estimator.param1
1

Estimated parameters: When data is fitted with an estimator, parameters are estimated from the data at hand. 所有的 estimated parameters 都是模型的属性,并以下划线结尾:

>>> estimator.estimated_param_ 

https://blog.csdn.net/10km/article/details/51906821

https://my.oschina.net/leejun2005/blog/150662

网格搜索

TODO

https://blog.csdn.net/u012897374/article/details/74999940

评论