回归与聚类
1.线性回归
回归问题:目标值是连续型的数值
线性关系一定是线性模型,线性模型不一定是线性关系
线性回归的损失和优化原理:
损失函数
优化方法:正规方程----直接求到最好的结果
梯度下降----试错、改进
线性回归API
sklearn.linear_model.LinearRegression(fit_intercept=True)
sklearn.linear_model.SGDRegressor(loss="squared_loss", fit_intercept=True, learning_rate ='invscaling', eta0=0.01)
案例:波士顿房价预测
1)获取数据集
2)划分数据集
3)特征工程:标准化
4)线性回归预估器流程
5)模型评估:均方误差(Mean Squared Error)MSE)评价机制:
sklearn.metrics.mean_squared_error(y_true, y_pred)
均方误差回归损失
y_true:真实值
y_pred:预测值
return:浮点数结果
2.欠拟合和过拟合
-
欠拟合:学习到的特征过少 。解决:增加数据的特征数量
-
过拟合:原始特征过多,存在一些嘈杂特征。解决:正则化----尽量减少高次项特征的影响
3.岭回归:线性回归的改进
岭回归,其实也是一种线性回归。只不过在算法建立回归方程时候,加上正则化的限制,从而达到解决过拟合的效果
sklearn.linear_model.Ridge(alpha=1.0, fit_intercept=True,solver="auto", normalize=False)
Ridge方法相当于SGDRegressor(penalty=‘l2’, loss=“squared_loss”)
sklearn.linear_model.RidgeCV(_BaseRidgeCV, RegressorMixin)
4.分类算法:逻辑回归
逻辑回归的原理:
-
输入
逻辑回归的输入就是一个线性回归的输出。
-
激活函数:sigmoid函数
逻辑回归的结果输入到sigmoid函数当中
输出结果:[0, 1]区间中的一个概率值,默认为0.5为阈值,小于0.5为一个类别,大于0.5为一个类别。
逻辑回归的损失,称之为对数似然损失
sklearn.linear_model.LogisticRegression(solver='liblinear', penalty=‘l2’, C = 1.0)
LogisticRegression方法相当于 SGDClassifier(loss="log", penalty=" "),SGDClassifier实现了一个普通的随机梯度下降学习,也支持平均随机梯度下降法(ASGD),可以通过设置average=True。而使用LogisticRegression(实现了SAG)
案例:癌症分类预测-良/恶性乳腺癌肿瘤预测
1)获取数据
2)数据处理—处理缺失值
3)数据集划分,先筛选特征值和目标值
4)特征工程----无量纲化:标准化
5)逻辑回归预估器
6)模型评估
分类的评估方法
-
精确率与召回率
混淆矩阵:在分类任务下,预测结果(Predicted Condition)与正确标记(True Condition)之间存在四种不同的组合,构成混淆矩阵(适用于多分类)
sklearn.metrics.classification_report(y_true, y_pred, labels=[], target_names=None )
-
F1-score,反映了模型的稳健型
-
ROC曲线与AUC指标
AUC只能用来评价二分类
AUC非常适合评价样本不平衡中的分类器性能
5.模型保存与加载
sklearn模型的保存和加载API
from sklearn.externals import joblib
保存:joblib.dump(rf, 'test.pkl')
加载:estimator = joblib.load('test.pkl')
6. 无监督学习:k-means算法
sklearn.cluster.KMeans(n_clusters=8,init=‘k-means++’)
案例:k-means对Instacart Market用户聚类
降维之后的数据:
1)预估器流程
2)看结果
3)模型评估
-
Kmeans性能评估指标
如果b_i>>a_i:趋近于1效果越好
b_i<<a_i:趋近于-1效果不好
轮廓系数的值介于【-1,1】sklearn.metrics.silhouette_score(X, labels)
-
K-means总结
特点分析:采用迭代式算法,直观易懂并且非常实用
缺点:容易收敛到局部最优解(多次聚类)