阿里云机器学习训练营-Day 1 基于逻辑斯蒂回归的分类预测 学习笔记

此笔记为阿里云天池机器学习训练营笔记,学习地址:https://tianchi.aliyun.com/s/1fc36a7e103eb9948c974f638e83a83b
感谢教程及阿里云提供平台

一、学习知识点概要

1.什么是逻辑回归

逻辑回归(Logistic regression,简称LR)逻辑回归是一个分类模型,并且广泛应用于各个领域之中,其最为突出的两点就是其模型简单和模型的可解释性强。

逻辑回归模型的优劣势:
优点: 实现简单,易于理解和实现;计算代价不高,速度很快,存储资源低;
缺点: 容易欠拟合,分类精度可能不高

2.逻辑回归的应用场景

逻辑回归模型广泛用于各个领域,包括机器学习,大多数医学领域和社会科学。

例如:疾病的分析和预测(糖料病、冠心病等)、市场的营销预测(预测客户购买产品或中止订购的倾向等)、贷款拖欠可能、推荐算法、医疗诊断等等,可见逻辑回归应用的领域还是颇为广泛的。

二、学习内容

学习目标
  • 了解 逻辑回归 的理论
  • 掌握 逻辑回归 的 sklearn 函数调用使用并将其运用到鸢尾花数据集预测
常用函数

以下为sklearn.linear_model.LgisticRegression的官方文档,可以查看相关的参数

sklearn.linear_model.LogisticRegression — scikit-learn 1.0.1 documentation

创建回归模型对象

class sklearn.linear_model.LogisticRegression(penalty='l2', *, 
dual=False, tol=0.0001, 
C=1.0, fit_intercept=True,
 intercept_scaling=1, class_weight=None, 
 random_state=None, solver='lbfgs', 
 max_iter=100, multi_class='auto',
 verbose=0, warm_start=False, 
 n_jobs=None, l1_ratio=None)
  • penalty: {‘l1’, ‘l2’, ‘elasticnet’, ‘none’}, default=’l2’

    • 正则化项的类别 默认为L2正则化项
  • dual:bool, default=False

    • 双重或原始公式。双公式只适用于使用L2惩罚的线性求解器。当样本数> 特征数时,更推荐False。
  • tol: :浮点数, 默认: 1e-4

    • 两次迭代误差停止阈值
  • class_weight:dict or ‘balanced’, default=None

    • 使用字典形式给出的权重参数,形式为{类标签:权重},不输入参数默认所有权重等于1
  • random_state : int, default = None

    • 伪随机数生成器的种子,用于清洗数据,这个没有什么好说的
  • solver: {‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’}, default=’lbfgs’

    • 优化问题中使用的算法。默认为’lbfgs’。
  • max_iter: int, default=100

    • 解器收敛的最大迭代次数 默认为100次
  • 模型对象的参数

    • coef_: 特征系数的数组,即w
    • n_features_in : 拥有特征的数量
    • intercept_ : 查看拟合曲线结局,即w0

拟合方法

#进行拟合
fit(X, y[, sample_weight])
#预测
#返回每个标签的预测样本概率
predict_proba()
#返回样本分类
predict()
实践

0.导入库函数

## 导入逻辑回归模型函数
from sklearn.linear_model import LogisticRegression

#seaborn库用于辅助matplotlib绘图
import matplotlib.pyplot as plt
import seaborn as sns

1.模型训练

## 调用逻辑回归模型
lr_clf = LogisticRegression()

## 用逻辑回归模型拟合构造的数据集
lr_clf = lr_clf.fit(x_fearures, y_label) #其拟合方程为 y=w0+w1*x1+w2*x2

2.查看拟合结果

# 可视化决策边界
plt.figure()
plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
plt.title('Dataset')

#plt.xlim,plt.ylim分别返回两个坐标轴上的最大值和最小值
#这里找到最值并绘制底图
nx, ny = 200, 100
x_min, x_max = plt.xlim()
y_min, y_max = plt.ylim()
x_grid, y_grid = np.meshgrid(np.linspace(x_min, x_max, nx),np.linspace(y_min, y_max, ny))

#np.c_表示按行连接两个矩阵,也就是两个矩阵左右相加,这里变成[x1,x2,y]
z_proba = lr_clf.predict_proba(np.c_[x_grid.ravel(), y_grid.ravel()])
z_proba = z_proba[:, 1].reshape(x_grid.shape)
plt.contour(x_grid, y_grid, z_proba, [0.5], linewidths=2., colors='blue')

plt.show()

3.查看新数据的分类概率

x_fearures_new1 = np.array([[0, -1]])
## 在训练集和测试集上分别利用训练好的模型进行预测
y_label_new1_predict = lr_clf.predict(x_fearures_new1)

print('The New point 1 predict class:\n',y_label_new1_predict)

## 由于逻辑回归模型是概率预测模型(前文介绍的 p = p(y=1|x,\theta)),所以我们可以利用 predict_proba 函数预测其概率
y_label_new1_predict_proba = lr_clf.predict_proba(x_fearures_new1)

print('The New point 1 predict Probability of each class:\n',y_label_new1_predict_proba)

输出结果:

The New point 1 predict class:
 [0]
The New point 1 predict Probability of each class:
 [[0.67507358 0.32492642]]
基本步骤
  1. 导入依赖 和数据集,必要的时候可以对数据集进行相应的分割
  2. 数据探索性分析
  3. 创建回归模型,设置相关参数
  4. 使用fit进行拟合
  5. 可以使用coef_或intercept_查看相关系数
  6. 将结果使用predict或者predict_proba,得到拟合后的结果

三、学习问题与解答

1.solver中如何区别使用什么样的回归算法

回答:官方文档中有给出相应的情况,以及该使用什么样的正则化系数

  • For small datasets, ‘liblinear’ is a good choice, whereas ‘sag’ and ‘saga’ are faster for large ones;

  • For multiclass problems, only ‘newton-cg’, ‘sag’, ‘saga’ and ‘lbfgs’ handle multinomial loss;

  • ‘liblinear’ is limited to one-versus-rest schemes.

  • Warning:

    The choice of the algorithm depends on the penalty chosen: Supported penalties by solver:

    • ‘newton-cg’ - [‘l2’, ‘none’]
    • ‘lbfgs’ - [‘l2’, ‘none’]
    • ‘liblinear’ - [‘l1’, ‘l2’]
    • ‘sag’ - [‘l2’, ‘none’]
    • ‘saga’ - [‘elasticnet’, ‘l1’, ‘l2’, ‘none’]

2.混淆矩阵是什么

回答:混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。

混淆矩阵的每一列代表了预测类别,每一列的总数表示预测为该类别的数据的数目;每一行代表了数据的真实归属类别,每一行的数据总数表示该类别的数据实例的数目。每一列中的数值表示真实数据被预测为该类的数目:第一行第一列中的43表示有43个实际归属第一类的实例被预测为第一类,同理,第一行第二列的2表示有2个实际归属为第一类的实例被错误预测为第二类。

四、学习思考与总结

虽然逻辑回归能够用于分类,不过其本质还是线性回归。它仅在线性回归的基础上,在特征到结果的映射中加入了一层sigmoid函数(非线性)映射,即先把特征线性求和,然后使用sigmoid函数来预测。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值