-
分类算法
-
回归算法
-
聚类算法
-
降维算法
-
模型优化
-
文本预处理
其中分类算法和回归算法又叫做监督学习,聚类算法和降维算法又叫做非监督学习。
1.分类算法
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)
'''
朴素贝叶斯算法
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)
'''
线性判别分析
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_:数组列表,每个高斯分布的方差σ
'''
二次判断分析
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,正则化参数,规范化协方差
'''
支持向量机
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_