sklearn可实现的函数或者功能有以下几种:
- 分类算法
- 回归算法
- 聚类算法
- 降维算法
- 模型优化
- 文本预处理
其中分类算法和回归算法又叫监督学习,聚类算法和降维算法又叫非监督学习
本篇介绍第一种
分类算法
1. 线性判别分析
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
lda = LinearDiscriminantAnalysis()
'''
__init__函数
def __init__(self, solver='svd', shrinkage=None, priors=None,
n_components=None, store_covariance=False, tol=1e-4):
self.solver = solver
self.shrinkage = shrinkage
self.priors = priors
self.n_components = n_components
self.store_covariance = store_covariance # used only in svd solver
self.tol = tol # used only in svd solver
solver="svd",求解算法,svd表示使用奇异值分解求解,不用计算协方差矩阵。
lsqr表示最小平方qr分解
eigen表示特征值分解
shrinkage=None,是否使用参数收缩
priors=None,用于LDA中贝叶斯规则的先验概率
components,需要保留的特征个数,小于等于n-1
store_covariance,是否计算每个类的协方差矩阵,0.19版本删除
用法:
lda.fit(X_train, y_train)
属性:
covariances_:每个类的协方差矩阵, shape = [n_features, n_features]
means_:类均值,shape = [n_classes, n_features]
priors_:归一化的先验概率
rotations_:LDA分析得到的主轴,shape [n_features, n_component]
scalings_:数组列表,每个高斯分布的方差σ
'''
2. 二次判别分析
from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis
qda = QuadraticDiscriminantAnalysis()
'''
__init__函数
def __init__(self, priors=None, reg_param=0., store_covariance=False,
tol=1.0e-4, store_covariances=None):
self.priors = np.asarray(priors) if priors is not None else None
self.reg_param = reg_param
self.store_covariances = store_covariances
self.store_covariance = store_covariance
self.tol = tol
reg_param=None,正则化参数,规范化协方差
'''
3. 支持向量机
from sklearn.svm import SVC
svc = SVC()
'''
__init__函数
def __init__(self, C=1.0, kernel='rbf', degree=3, gamma='auto',
coef0=0.0, shrinking=True, probability=False,
tol=1e-3, cache_size=200, class_weight=None,
verbose=False, max_iter=-1, decision_function_shape='ovr',
random_state=None):
C,错误项的惩罚系数,即对分错样本的惩罚程度越大,因此在训练样本中准确率越高,但是泛化能力降低,也就是对测试数据的分类准确率降低。
kernel,算法中采用的核函数类型
degree,这个参数只对多项式核函数有用,是指多项式核函数的阶数n
gamma,核函数系数,默认为auto
coef0,核函数中的独立项
probability,是否启用概率估计
shrinking,是否采用启发式收缩方式
tol,svm停止训练的误差精度
cache_size,指定训练所需要的内存,以MB为单位,默认为200MB。
class_weight,给每个类别分别设置不同的惩罚参数C,如果没有给,则会给所有类别都给C=1,即前面参数指出的参数C.
verbose,是否启用详细输出。此设置利用libsvm中的每个进程运行时设置,如果启用,可能无法在多线程上下文中正常工作。一般情况都设为False,不用管它。
max_iter,最大迭代次数,如果为-1,表示不限制
random_state,伪随机数发生器的种子,在混洗数据时用于概率估计。
属性:
svc.n_support_:各类各有多少个支持向量
svc.support_:各类的支持向量在训练样本中的索引
svc.support_vectors_:各类所有的支持向量
'''
4. 神经网络
from sklearn.neural_network import MLPClassifier
mlp = MLPClassifier()
'''
__init__函数
def __init__(self, hidden_layer_sizes=(100,), activation="relu",
solver='adam', alpha=0.0001,
batch_size='auto', learning_rate="constant",
learning_rate_init=0.001, power_t=0.5, max_iter=200,
shuffle=True, random_state=None, tol=1e-4,
verbose=False, warm_start=False, momentum=0.9,
nesterovs_momentum=True, early_stopping=False,
validation_fraction=0.1, beta_1=0.9, beta_2=0.999,
epsilon=1e-8):
hidden_layer_sizes,长度=n_layers-2, 默认(100,),第i个元素表示第i个隐藏层的神经元的个数。
activation,激活函数,默认为relu
solver,默认 ‘adam’,用来优化权重
alpha,可选的,默认0.0001,正则化项参数
batch_size,默认‘auto’,随机优化的minibatches的大小
learning_rate,默认‘constant’,用于权重更新
max_iter,默认200,最大迭代次数。
random_state,可选,默认None,随机数生成器的状态或种子
shuffle,可选,默认True,只有当solver=’sgd’或者‘adam’时使用,判断是否在每次迭代时对样本进行清洗。
tol,可选,默认1e-4,优化的容忍度
learning_rate_int,默认0.001,初始学习率,控制更新权重的补偿,只有当solver=’sgd’ 或’adam’时使用。
power_t,只有solver=’sgd’时使用,是逆扩展学习率的指数.当learning_rate=’invscaling’,用来更新有效学习率。
verbose,是否将过程打印到stdout
warm_start,当设置成True,使用之前的解决方法作为初始拟合,否则释放之前的解决方法。
属性:
- classes_:每个输出的类标签
- loss_:损失函数计算出来的当前损失值
- coefs_:列表中的第i个元素表示i层的权重矩阵
- intercepts_:列表中第i个元素代表i+1层的偏差向量
- n_iter_ :迭代次数
- n_layers_:层数
- n_outputs_:输出的个数
- out_activation_:输出激活函数的名称。
用法:
- fit(X,y):拟合
- get_params([deep]):获取参数
- predict(X):使用MLP进行预测
- predic_log_proba(X):返回对数概率估计
- predic_proba(X):概率估计
- score(X,y[,sample_weight]):返回给定测试数据和标签上的平均准确度
-set_params(**params):设置参数。
'''
5. 决策树算法
from sklearn.tree import DecisionTreeClassifier
dtc = DecisionTreeClassifier()
'''
__init__函数
def __init__(self,
criterion="gini",
splitter="best",
max_depth=None,
min_samples_split=2,
min_samples_leaf=1,
min_weight_fraction_leaf=0.,
max_features=None,
random_state=None,
max_leaf_nodes=None,
min_impurity_decrease=0.,
min_impurity_split=None,
class_weight=None,
presort=False):
criterion,划分标准;可选项,默认值为”gini”,即基尼指数,”entropy”信息增益
max_depth,最大深度;可选项,默认值为”None”,即不限深度,直到达到某种阈值
min_samples_split,阈值;可选项,默认值为2,当某个结点的样本数小于该值时,停止划分;
min_samples_leaf,叶结点中,样本点的最小值;默认值为1
属性:
n_classes_ 列出类数目
classes_ 列出类标签
feature_importances_ 列出每一维特征的重要性
n_features_ 特征数目
用法:
fix(X,y) 拟合
get_params() 获取参数表中的参数
predict(X) 返回预测出的结果
score(X,y) 返回准确率
'''
6. 集成算法-Bagging
from sklearn.ensemble import BaggingClassifier
bgc = BaggingClassifier()
'''
__init__函数
def __init__(self,
base_estimator=None,
n_estimators=10,
max_samples=1.0,
max_features=1.0,
bootstrap=True,
bootstrap_features=False,
oob_score=False,
warm_start=False,
n_jobs=1,
random_state=None,
verbose=0):
base_estimator,基本的估计器,就是你要用到的算法,如果该参数没有赋值,默认为决策树。
这个信息告诉我们bagging,不仅可以用在决策树上,还可以用于其他的算法模型上
n_estimators,基本估计器的个数,就是你要产生多少个子模型,用在决策树时,即表示产生多少条决策树用来融合。
max_samples,节点分裂参与判断的最大样本数
max_features,节点分裂参与判断的最大特征数
bootstrap,是否有放回对样本抽样
bootstrap_features,是否有放回对特征抽样
'''
7. 集成算法-随机森林
from sklearn.ensemble import RandomForestClassifier
rfc = RandomForestClassifier()
'''
__init__函数
def __init__(self,
n_estimators=10,
criterion="gini",
max_depth=None,
min_samples_split=2,
min_samples_leaf=1,
min_weight_fraction_leaf=0.,
max_features="auto",
max_leaf_nodes=None,
min_impurity_decrease=0.,
min_impurity_split=None,
bootstrap=True,
oob_score=False,
n_jobs=1,
random_state=None,
verbose=0,
warm_start=False,
class_weight=None):
min_samples_split,分裂所需要的最小样本数
min_samples_leaf,叶节点最小样本数
min_weight_fraction_leaf,叶子节点所需要的最小权值
bootstrap,是否有放回的采样。
oob_score,在某次决策树训练中没有被bootstrap选中的数据
warm_start,热启动,决定是否使用上次调用该类的结果然后增加新的。
class_weight,各个label的权重。
用法:
predict_proba(x):给出带有概率值的结果。每个点在所有label的概率和为1.
predict(x):直接给出预测结果。内部还是调用的predict_proba(),根据概率的结果看哪个类型的预测值最高就是哪个类型。
predict_log_proba(x):和predict_proba基本上一样,只是把结果给做了log()处理。
'''
8. 集成算法-AdaBoost
from sklearn.ensemble import AdaBoostClassifier
abc = AdaBoostClassifier()
'''
__init__函数
def __init__(self,
base_estimator=None,
n_estimators=50,
learning_rate=1.,
algorithm='SAMME.R',
random_state=None):
learning_rate,学习效率
'''
9. 集成算法-GBDT(Gradient Tree Boosting)
from sklearn.ensemble import GradientBoostingClassifier
gbc = GradientBoostingClassifier()
'''''
__init__函数
def __init__(self, loss='deviance', learning_rate=0.1, n_estimators=100,
subsample=1.0, criterion='friedman_mse', min_samples_split=2,
min_samples_leaf=1, min_weight_fraction_leaf=0.,
max_depth=3, min_impurity_decrease=0.,
min_impurity_split=None, init=None,
random_state=None, max_features=None, verbose=0,
max_leaf_nodes=None, warm_start=False,
presort='auto'):
subsample,训练每个决策树所用到的子样本占总样本的比例,而对于子样本的选择是随机的。
max_ leaf_ nodes,定义了树里最多能有多少个终点节点。
'''
10. knn算法
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier()
'''
__init__函数
def __init__(self, n_neighbors=5,
weights='uniform', algorithm='auto', leaf_size=30,
p=2, metric='minkowski', metric_params=None, n_jobs=1,
**kwargs):
n_neighbors=5,指定以几个最邻近的样本具有投票权
weight="uniform",每个拥有投票权的样本是按照什么比重投票,"uniform"表示按照等比重投票,"distance"表示按距离反比投票,
[callable]表示自己定义的一个函数,这个函数接收一个距离数组返回一个全职数组
algorithm="auto",内部采用什么样的算法实现,有以下几种方法,"ball_tree":球树,"kd_tree":kd树,"brute":暴力搜索。
"auto"表示自动根据数据类型和结构选择合适的算法。一般来说,低维数据用kd_tree,高维数据用ball_tree
leaf_size=30:ball_tree或者kd_tree的叶子节点规模
matric="minkowski",怎样度量距离,默认是闵式距离
p=2,闵式距离各种不同的距离参数
metric_params=None,距离度量函数的额外关键字参数,一般默认为None,不用管
n_jobs=1,并行的任务数
用法:
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
knn.score(y_pred, y_test)
'''
11. 朴素贝叶斯算法
from sklearn.naive_bayes import GaussianNB
gsn = GaussianNB()
'''
__init__函数
def __init__(self, priors=None):
self.priors = priors
priors=None,先验概率
用法:
gsn.fit(X_train, y_train)
y_pred = gsn.predict(X_test)
'''
12. 逻辑回归
逻辑回归虽然名字叫回归,却是一个分类算法,
from sklearn.linear_model import LogisticRegression
clf = LogisticRegression()
'''
__init__函数
def __init__(self, penalty='l2', dual=False, tol=1e-4, C=1.0,
fit_intercept=True, intercept_scaling=1, class_weight=None,
random_state=None, solver='liblinear', max_iter=100,
multi_class='ovr', verbose=0, warm_start=False, n_jobs=1):
penalty,惩罚项,str类型,可选参数为l1和l2,默认为l2。
dual,对偶或原始方法,bool类型,默认为False。
tol,停止求解的标准,float类型,默认为1e-4。就是求解到多少的时候,停止,认为已经求出最优解
c,正则化系数λ的倒数,float类型,默认为1.0
fit_intercept,是否存在截距或偏差,bool类型,默认为True。
intercept_scaling,仅在正则化项为”liblinear”,且fit_intercept设置为True时有用。float类型,默认为1。
class_weight,用于标示分类模型中各种类型的权重,可以是一个字典或者’balanced’字符串,默认为不输入,也就是不考虑权重,即为None。
solver,优化算法选择参数
'''
网友评论