scikit-learn分类、回归方法介绍


scikit-learn官网

分类

确定对象属于哪个类别。
应用:垃圾邮件检测,图像识别。
算法: SVM随机森林,NBC(Naive Bayesian Classifier,朴素贝叶斯分类)算法、Logistic Regress(逻辑回归)算法、KNN(K-Nearest Neighbor,K 最近邻近)算法、ANN(Artificial Neural Network,人工神经网络)算法、ID3(Iterative Dichotomiser 3 迭代二叉树3 代)决策树算法、C4.5 决策树算法、C5.0 决策树算法…

LR的python实现:

使用sklearn.linear_model中的LogisticRegression方法来训练逻辑回归分类器,其主要参数如下:
class_weight:用于处理类别不平衡问题,即这时的阈值不再是0.5,而是一个再缩放后的值;
fit_intercept:bool型参数,设置是否求解截距项,即b,默认True;
random_state:设置随机数种子;
solver:选择用于求解最大化“对数似然”的算法,有以下几种及其适用场景:
  1.对于较小的数据集,使用"liblinear"更佳;
  2.对于较大的数据集,“sag”、“saga"更佳;
  3.对于多分类问题,应使用"newton-cg”、“sag”、“saga”、“lbfgs”;
max_iter:设置求解算法的迭代次数,仅适用于solver设置为"newton-cg"、“lbfgs”、“sag"的情况;
multi_class:为多分类问题选择训练策略,有"ovr”、“multinomial” ,后者不支持"liblinear";
n_jobs:当处理多分类问题训练策略为’ovr’时,在训练时并行运算使用的CPU核心数量。当solver被设置为“liblinear”时,不管是否指定了multi_class,这个参数都会被忽略。如果给定值-1,则所有的核心都被使用,所以推荐-1,默认项为1,即只使用1个核心。

LR分类器代码

回归

预测与对象关联的连续值属性。

应用:药物反应,股票价格。 算法: SVR,岭回归,套索,…
支持向量回归

岭回归

岭回归的目标函数:
在这里插入图片描述
它是在最小二乘的基础之上,在目标函数中增加了后面一项(即为L2正则化)。
岭回归是对最小二乘回归的一种补充,它损失了无偏性,来换取高的数值稳定性,从而得到较高的计算精度。
岭回归原理介绍
在这里插入图片描述
在这里插入图片描述
scikit-learn实现岭回归(可直接参考官方文档)

import numpy as np
import matplotlib.pyplot as plt
def ridgeRegres(xMat,yMat,lam=0.2):
    xTx = xMat.T*xMat
    denom = xTx + np.eye(np.shape(xMat)[1])*lam
    if np.linalg.det(denom) == 0.0:
        print("This matrix is singular, cannot do inverse")
        return
    ws = denom.I * (xMat.T*yMat)
    return ws 
def ridgeTest(xArr,yArr):
    xMat = np.mat(xArr); yMat=np.mat(yArr).T
    yMean = np.mean(yMat) # 数据标准化
    # print(yMean)
    yMat = yMat - yMean
    # print(xMat)
    #regularize X's
    xMeans = np.mean(xMat,0)
    xVar = np.var(xMat,0)
    xMat = (xMat - xMeans) / xVar #(特征-均值)/方差
    numTestPts = 30
    wMat = np.zeros((numTestPts,np.shape(xMat)[1]))
    for i in range(numTestPts): # 测试不同的lambda取值,获得系数
        ws = ridgeRegres(xMat,yMat,np.exp(i-10))
        wMat[i,:]=ws.T
    return wMat 
# import data
ex0 = np.loadtxt('abalone.txt',delimiter='\t')
xArr = ex0[:,0:-1]
yArr = ex0[:,-1]
# print(xArr,yArr)
ridgeWeights = ridgeTest(xArr,yArr)
# print(ridgeWeights)
plt.plot(ridgeWeights)
plt.show()

Lasso回归

加入L1正则项
在这里插入图片描述
python实现
在 Python 中,Lasso 是 sklearn 包下的一个典型 Model。sklearn 中主要包含 Lasso 及 Ridge 模型。
其中,主要关注参数为 alpha,其作用与 sklearn 包下的另一模型 Ridge 类似,是一个衡量模型灵活度的正则参数。正则度越高,越不可能 overfit。但是它也会导致模型灵活度的降低,可能无法捕捉数据中的所有信号。
通过 Lasso 自带的 CV(Cross Validation)设置,可以直接通过机器挑选最好的 alpha。

model_lasso = LassoCV(alphas = [1, 0.1, 0.001, 0.0005]).fit(X_train, y) 
# 此处 alpha 为通常值 #fit 把数据套进模型里跑

python实现Lasso的函数详解
在这里插入图片描述

岭回归和Lasso代码

For multi-task outputs, use MultiTaskLassoCV(多任务 Lasso回归)

局部加权线性回归

局部加权线性回归是在线性回归的基础上增加权值,以更好的拟合弯曲的线段
(详细参见:http://blog.csdn.net/weiyongle1996/article/details/74537567)
在这里插入图片描述
更改k的值会获得不同的曲线,k越小,对真实数据拟合的越好(但可能过拟合),k越大,越趋向于标准的线性回归。
局部加权线性回归代码

聚类

将类似对象自动分组到集合中。
算法: k-Means(有点旧了),谱聚类,均值漂移,…

降维

减少要考虑的随机变量的数量。
算法: PCA,特征选择,非负矩阵分解。

常用函数汇总

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值