文章目录
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个核心。
回归
预测与对象关联的连续值属性。
应用:药物反应,股票价格。 算法: 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 把数据套进模型里跑
For multi-task outputs, use MultiTaskLassoCV(多任务 Lasso回归)
局部加权线性回归
局部加权线性回归是在线性回归的基础上增加权值,以更好的拟合弯曲的线段
(详细参见:http://blog.csdn.net/weiyongle1996/article/details/74537567)
更改k的值会获得不同的曲线,k越小,对真实数据拟合的越好(但可能过拟合),k越大,越趋向于标准的线性回归。
局部加权线性回归代码
聚类
将类似对象自动分组到集合中。
算法: k-Means(有点旧了),谱聚类,均值漂移,…
降维
减少要考虑的随机变量的数量。
算法: PCA,特征选择,非负矩阵分解。