此笔记为阿里云天池机器学习训练营笔记,学习地址:https://tianchi.aliyun.com/s/1fc36a7e103eb9948c974f638e83a83b
感谢教程及阿里云提供平台
逻辑回归(Logistic regression,简称LR)逻辑回归是一个分类模型,并且广泛应用于各个领域之中,其最为突出的两点就是其模型简单和模型的可解释性强。
逻辑回归模型的优劣势:
优点: 实现简单,易于理解和实现;计算代价不高,速度很快,存储资源低;
缺点: 容易欠拟合,分类精度可能不高
逻辑回归模型广泛用于各个领域,包括机器学习,大多数医学领域和社会科学。
例如:疾病的分析和预测(糖料病、冠心病等)、市场的营销预测(预测客户购买产品或中止订购的倾向等)、贷款拖欠可能、推荐算法、医疗诊断等等,可见逻辑回归应用的领域还是颇为广泛的。
以下为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’
dual:bool, default=False
tol: :浮点数, 默认: 1e-4
class_weight:dict or ‘balanced’, default=None
random_state : int, default = None
solver: {‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’}, default=’lbfgs’
max_iter: int, default=100
模型对象的参数
拟合方法
#进行拟合
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.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:
2.混淆矩阵是什么
回答:混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。
混淆矩阵的每一列代表了预测类别,每一列的总数表示预测为该类别的数据的数目;每一行代表了数据的真实归属类别,每一行的数据总数表示该类别的数据实例的数目。每一列中的数值表示真实数据被预测为该类的数目:第一行第一列中的43表示有43个实际归属第一类的实例被预测为第一类,同理,第一行第二列的2表示有2个实际归属为第一类的实例被错误预测为第二类。
虽然逻辑回归能够用于分类,不过其本质还是线性回归。它仅在线性回归的基础上,在特征到结果的映射中加入了一层sigmoid函数(非线性)映射,即先把特征线性求和,然后使用sigmoid函数来预测。