回归与聚类算法
- 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=:预测得分,可以是正类的估计概率、置信值或者分类器方法的返回值