1 ,案例 : 目标
- 小明想去美国留学,目的地是加州理工大学
- 加州理工大学,对我们中国学生有两门考试,exam1,exam2
- 我们有历史数据表,这是以往的学生成绩,和是否被录取的历史信息
- 目的 :
1 ,根据历史数据,得到逻辑回归模型
2 ,根据回归模型,判断小明被录取的可能性有多大
2 ,案例 : 数据的样子
- 数据 :
34.62365962451697,78.0246928153624,0
30.28671076822607,43.89499752400101,0
35.84740876993872,72.90219802708364,0
60.18259938620976,86.30855209546826,1
- 观察这组数据 :
1 ,他没有表头,我们需要手动添加表头
2 ,三列 : exam1,exam2,admitted
- 数据含义 :
1 ,exam1 : 第一个科目成绩
2 ,exam2 : 第二个科目成绩
3 ,admitted : 是否被录取 ( 0-失败,1-成功 )
- 数据行列 : 100 行三列
[100 rows x 3 columns]
3 ,画散点图 : 成功失败点,观察数据,直观感受
- 代码 :
if __name__ == '__main__':
pdData = pd.read_csv("LogiReg_data.txt",header=None,names=["exam1","exam2","Admitted"])
positive = pdData[pdData['Admitted'] == 1]
negative = pdData[pdData['Admitted'] == 0]
fig, ax = plt.subplots(figsize=(10, 5))
ax.scatter(positive['exam1'], positive['exam2'], s=30, c='b', marker='o', label='Admitted')
ax.scatter(negative['exam1'], negative['exam2'], s=30, c='r', marker='x', label='Not Admitted')
ax.legend()
ax.set_xlabel('Exam 1 Score')
ax.set_ylabel('Exam 2 Score')
plt.show()
- 结果 :
- 结论 :
1 ,分数越低,越不被录取
2 ,此种结果,事发必然
4 ,回归分析 : 思路
- 影响事情成败的因素 : 2 个 ( 两门功课的成绩 )
- 所以数据分析的维度 : 2 个
5 ,逻辑回归 : 目标
- 回归函数 : f(x1,x2) = θ0 + θ1 * x1 + θ2 * x2
- 目标 : 求出 ( θ0,θ1,θ2 )
- 怎么求 : 建立分类器
- 设定阈值 : 根据阈值,判定录取结果
1 ,概率 >0.5 : 被录取了
2 ,概率 <0.5 : 没被录取
- 如图 :
6 ,求解 : 提纲
- sigmoid : 映射到概率的函数
- model : 返回预测结果值
- cost : 根据参数计算损失
- gradient : 计算每个参数的梯度方向
- descent : 进行参数更新
- accuracy: 计算精度