回归与聚类算法

  • 1 线性回归
  • 2 欠拟合与过拟合
  • 3 岭回归
  • 4 逻辑回归
  • 5 模型保存与加载
  • 6 K-means算法(无监督学习)


1 线性回归

原理
线性回归的损失和优化
API

什么是线性回归?
线性回归线性回归是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式

线性模型: 自变量是一次方 参数是一次方

损失函数/cost/成本函数/目标函数
最小二乘法
优化损失:
优化方法?
正规方程
能直接求解(W),但当特征过多过复杂时,求解速度太慢并且得不到结果
梯度下降

from sklearn.linear_model import LinearRegression,SGDRegressor

LinearRegression(fit_intercept=True)
#     通过正规方程优化
#     fit_intercept:是否计算偏置
#     LinearRegression.coef_ :回归系数
#     LinearRegression.intercept_:偏置
    
SGDRegressor(loss="squared_loss",
             fit_intercept=True,
             learning_rate='invscaling',eta0=0.01)
#     SGDRegressor类实现了随机梯度下降学习,它支持不同的loss函数和正则化惩罚项来拟合线性回归模型
#     loss:损失类型
#         loss="squared_loss":普通最小二乘法
#     fit_intercept:是否计算偏置
#     learning_rate:string, optional
#         学习率填充
#         "constant":eta = eta0
#         "optional":eta = 1.0/(alpha * (t + t0)[default])
#         "invscaling": eta = eta0/ pow(t,power_t)
#             power_t=0.25:存在父类当中
#         对于一个常数值的学习率来说,可以使用learning_rate='constant',并使用eta0来指定学习率
#     SGDRegressor.coef_ :回归系数
#     SGDRegressor.intercept_:偏置

2 欠拟合与过拟合

拟合程度的理解

3 岭回归

带有L2正则化的线性回归–岭回归

from sklearn.linear_model import Ridge

Ridge(alpha=1.0,fit_intercept=Ture,solver='auto',normalize=False)
Ridge(alpha=1.0,
    fit_intercept=Ture,
    solver='auto',
    normalize=False)
    
    具有l2正则化的线性回归
    alpha:正则化力度(0-1,1-10)
    solver:会根据数据自动选择优化方法
        sag:如果数据集、特征都比较大,选择该随机梯度下降优化
    normalize:数据是否进行标准化
        normalize=False:可以在fit之前调用preprocessing.StanderdScaler标准化数据
    Ridge.coef_:回归权重
    Ridge.intercept_:回归偏置

4 逻辑回归

是属于分类算法

from sklearn.metrics import classification_report

classification_report(y_true=,y_pred=,labels=[],target_names=None)

sklearn.metrics.classification_report(
       y_true=,
       y_pred=,
       labels=[],
       target_names=None)
   y_true:真实目标值
   y_pred:估计器预测目标值
   labels:指定类别对应的数字
   target_names:目标类别名称
   return:每个类别精准率与召回率

5 模型保存与加载

from sklearn.externals import joblib

# 1.保存模型
joblib.dump(estimator, "my_ridge.pkl")
#     estimator: 预估器
#     "my_ridge.pkl": 模型路径和命名(后缀为pkl)

# 2.加载模型
estimator = joblib.load("my_ridge.pkl")
#     "my_ridge.pkl":模型文件的路径

6 K-means算法(无监督学习)

什么是无监督学习
没有目标值 - 无监督学习

无监督学习包含算法
聚类:
K-means(K均值聚类)
降维:
PCA
K-means原理

from sklearn.cluster import KMeans

estimator = KMeans(n_clusters=3)
#     n_clusters= :开始的聚类中心数量(K值)
#     init= : 初始化方法,默认为"k-means++"
#     labels_: 默认标记的类型,可与和真实值比较(不是值比较)

estimator.fit(data_new)
#     fit():fit中只用传入特质值(没有目标值)
Kmeans性能评估指标
    轮廓系数
    如果b_i>>a_i:趋近于1效果越好,
    b_i<<a_i:趋近于-1,效果不好。
    轮廓系数的值是介于 [-1,1] ,
    越趋近于1代表内聚度和分离度都相对较优。
from sklearn.metrics import silhouette_score

silhouette_score(X, labels=)
    计算所有样本的平均轮廓系数
    X:特征值
    labels:被聚类标记的目标值

ROC曲线与AUC指标

from sklearn.metrics import roc_auc_score

roc_auc_score(y_true=, y_score=)
    计算ROC曲线面积,即AUC值
    y_true=: 每个样本的真实类别,必须为0(返例),1(正例标记)
    y_score=:预测得分,可以是正类的估计概率、置信值或者分类器方法的返回值