模型保存与加载
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