分类算法
一 SVC
class sklearn.svm.SVC(C=1.0, kernel='rbf', degree=3, gamma=0.0, coef0=0.0, shrinking=True, probability=False, tol=0.001, cache_size=200, class_weight=None, verbose=False, max_iter=-1, random_state=None)
Parameters:(参数和属性均只列了常用参数和属性)
- C 是惩罚因子
- Kernel 是核函数,必须取‘linear‘、‘poly’、 ‘rbf’、 ‘sigmoid’、 ‘precomputed’之一
Attributes:
- support_ 支持向量的索引 array-like, shape = [n_SV]
- support_vectors_ 支持向量 array-like, shape = [n_SV, n_features]
- n_support_ 每个类别支持向量的个数 array-like, dtype=int32, shape = [n_class]
二 RandomForestClassifier
class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion='gini', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', max_leaf_nodes=None, bootstrap=True, oob_score=False, n_jobs=1, random_state=None, verbose=0, warm_start=False, class_weight=None)
Parameters:
- n_estimators 森林中树的个数
- criterion 评价划分程度的函数,’gini‘表示基尼不纯度,’entropy‘表示熵,用于信息增益
Attributes:
- feature_importances_ 特征重要程度,值越大特征越重要
交叉检验
我们在进行机器学习过程中,首先会把数据集分为两部分:训练数据集和验证数据集;要判断一个模型的优秀程度,我们将训练数据集上训练得到的模型,代入到验证数据集上去验证,从而得到一个验证结果;但我们不能仅仅划分一次数据集,而是要随机的多划分几次;从而每次都得到一个结果;再求其均值,就可以作为对模型的评价了。
sklearn.cross_validation.cross_val_score即是实现了这样一个功能
sklearn.cross_validation.cross_val_score(estimator, X, y=None, scoring=None, cv=None, n_jobs=1, verbose=0, fit_params=None, pre_dispatch='2*n_jobs')
- estimator 某一种分类器,例如 estimator = sklearn.svm.SVC(c=1.0)
- X,y 分别是训练数据和标签
- cv If None, it is equivalent to cv=3
示例如下:
from sklearn.svm import SVC
from sklearn.cross_validation import cross_val_score
X=train_df.iloc[:,1:]#训练数据 y=train_df.iloc[:,0]#标签 model = SVC(C=3.0) scores = cross_val_score(model, X, y) print scores,scores.mean()#scores输出是一个含三个float值的序列,mean()是求均值