加载数据集
'''
一个dataset是一个类似字典的对象,数据存储在n_samples,n_features的array对象.data中,在监督学习中,响应
变量存储在.target中
'''
from sklearn import datasets
iris = datasets.load_iris()
digits = datasets.load_digits()
print digits.data
digits.target
digits.images[0]
'''
1,学习和预测
python的estimator类实现了fit(X)和predict(T)方法,sklearn.svm.SVC实现了SVM分类器
'''
from sklearn import svm
clf = svm.SVC(gamma=0.001,C=100.)
'''训练模型'''
clf.fit(digits.data[:-1],digits.target[:-1])
'''预测最后一个样本'''
clf.predict(digits.data[-1:])
'''一个手写字符识别完整例子
http://scikit-learn.org/stable/auto_examples/classification/plot_digits_classification.html
#example-classification-plot-digits-classification-py
'''
保存模型
'''
使用python内置的pickle保存模型
'''
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)
import pickle
s= pickle.dumps(clf)
clf2=pickle.loads(s)
clf2.predict(X[0:1])
y[0]
'''
joblib适合存储大型模型,但是智能放到磁盘,而不能为字符串
'''
from sklearn.externals import joblib
joblib.dump(clf,'filename.pkl')
clf=joblib.load('filename.pkl')
Conventions
'''
Type casting
'''
import numpy as np
from sklearn import random_projection
rng = np.random.RandomState(0)
X = rng.rand(10,2000)
X = np.array(X,dtype='float32')
X.dtype
transformer = random_projection.GaussianRandomProjection()
X_new = transformer.fit_transform(X)
X_new.dtype
'''
回归时响应变量转为float64,分类时步改变
'''
from sklearn import datasets
from sklearn.svm import SVC
iris = datasets.load_iris()
clf = SVC()
clf.fit(iris.data,iris.target)
list(clf.predict(iris.data[:3]))
clf.fit(iris.data,iris.target_names[iris.target])
list(clf.predict(iris.data[:3]))
'''
重新拟合更新参数,通过sklearn.pipeline.Pipeline.set_params方法,多次调用fit()方法将会覆盖前面fit()所学习到的
'''
rng = np.random.RandomState(0)
X = rng.rand(100,10)
y = rng.binomial(1,0.5,100)
X_test = rng.rand(5,10)
clf =SVC()
clf.set_params(kernel = 'linear').fit(X,y)
clf.predict(X_test)
clf.set_params(kernel='rbf').fit(X,y)
clf.predict(X_test)