数据处理的统计学习(scikit-learn教程)
|
交叉验证生成器: 练习: import numpy as npfrom sklearn import cross_validation,datasets,svm digits = datasets.load_digits() X = digits.data y = digits.target svc = svm.SVC(kernel='linear') C_s = np.logspace(-10,10) 完整代码: (3)网格搜索和交叉验证模型网格搜索: from sklearn.grid_search import GridSearchCV Cs = np.logspace(-6,10) clf = GridSearchCV(estimator=svc,param_grid=dict(C=Cs),? ? ? ? ? ? ? ? ? n_jobs=-1) clf.fit(X_digits[:1000],y_digits[:1000]) ? ? ? ? clf.best_score_ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? clf.best_estimator_.C ? ? ? ? ? ? ? ? ? ? ? ? ? ?# Prediction performance on test set is not as good as on train setclf.score(X_digits[1000:],y_digits[1000:]) ? ? ? 默认情况下, cross_validation.cross_val_score(clf,y_digits) 两个交叉验证循环是并行执行的:一个 【警告】你不能在并行计算时嵌套对象( 交叉验证估测: from sklearn import linear_model,datasets lasso = linear_model.LassoCV() diabetes = datasets.load_diabetes() X_diabetes = diabetes.data y_diabetes = diabetes.target lasso.fit(X_diabetes,y_diabetes)# The estimator chose automatically its lambda:lasso.alpha_ 这些模型的称呼和他们的对应模型很相似,只是在他们模型名字的后面加上了' 练习:
``` 四、无监督学习:寻找数据的代表(1)聚类:将观测样例聚集到一起聚类解决的问题:
from sklearn import cluster,datasets iris = datasets.load_iris() X_iris = iris.data y_iris = iris.target k_means = cluster.KMeans(n_clusters=3) k_means.fit(X_iris) print(k_means.labels_[::10])print(y_iris[::10]) 注意:没有绝对的保证能够恢复真实的分类。首先,尽管scikit-learn使用很多技巧来缓和问题的难度,但选择簇的个数还是是很困难的,初始状态下算法是很敏感的,可能会陷入局部最小。 8个簇: 真实情况: 不要“过解释”聚类结果 应用实例:矢量化 import scipy as sptry: ? lena = sp.lena()except AttributeError: ? from scipy import misc ? lena = misc.lena() X = lena.reshape((-1,1)) # We need an (n_sample,n_feature) arrayk_means = cluster.KMeans(n_clusters=5,n_init=1) k_means.fit(X) values = k_means.cluster_centers_.squeeze() labels = k_means.labels_ lena_compressed = np.choose(labels,values) lena_compressed.shape = lena.shape 原始图像: K-means矢量化: 等段:(Equal bins) 图像直方图:
|

