前言
大家中午好呀,我是浣能🦝,欢迎来到我们机器学习之旅的Day 13!
上次,我们用 Pandas 手写了“女活男死”的规则,拿到了 76.5% 的准确率。这就像是手工作坊,虽然能用,但遇到复杂情况(比如“有钱的男性”或“穷苦的老人”)就无能为力了。
我们将引入机器学习霸主 scikit-learn 。从今天起,无论多么复杂的模型(逻辑回归、决策树、神经网络),在 sklearn 里都将简化为同一个“万能公式”。
同时,我们的百宝箱理论知识内容依然在继续,讲完本次线性回归的基础知识,下次课就该介绍逻辑回归的内容了。同时,本次例子使用了部分逻辑回归函数,相当于提前预告了一下了。
第一部分:百宝箱——线性回归(下)
当直线不够用(欠拟合)或特征打架(共线性)时怎么办?以及模型到底是怎么算出来的。
1. 进阶一:多项式回归
问题: 假如数据本身是一条抛物线(比如身高和体重的关系),用直线去拟合就是欠拟合。
解决: “升维”。虽然还是线性回归,但我们把x变成 x^2 甚至 x^n。
警惕过拟合: 如果你用的次幂太高(比如15次幂),模型会把所有噪点都连起来,虽然训练误差为0,但预测新数据会完蛋,甚至还会引发“维度灾难”!
2. 进阶二:多重共线性
现象: 当你的特征之间高度相关(比如“左脚鞋码”和“右脚鞋码”同时作为特征预测身高)。
后果: 模型会懵圈,参数估计变得极不稳定。
诊断工具: VIF (方差膨胀因子)。一般来说,如果 VIF > 4,就认为存在多重共线性,需要处理(比如删掉其中一个特征)。
3. 进阶三:模型选择 (AIC 与 BIC)
当你有好几个模型(比如一个用了3个特征,一个用了5个特征),怎么选?
AIC (赤池信息准则): 越小越好。它在寻找拟合度与参数个数的平衡。
BIC (贝叶斯信息准则): 越小越好。它的惩罚力度比 AIC 更大,倾向于选更简单的模型。
4. 求解核心:最小二乘法 vs 梯度下降
最后,机器到底是怎么求出斜率w和截距b的?我们可以使用两种流派:
1.流派一:最小二乘法
原理: 直接利用以下矩阵运算一步算出最优解:
![]()
工具: statsmodels 库擅长这个,输出结果像R语言一样详细。
2.流派二:梯度下降
原理: 想象一个机器人在碗状的曲面上,沿着梯度的反方向(最陡峭的下坡路)一步步往下走,直到走到碗底(损失函数最小值)。
公式:
![]()
工具: sklearn 和深度学习网络主要用这个。
第二部分:sklearn三部曲
现在,请记住 sklearn 的核心操作,只有这三步:1. 实例化(Instantiate)->2. 训练 (Fit) ->3. 预测 (Predict)
这就是所有 sklearn 模型的通用“语法”。
我们今天依旧使用上次的Titanic数据集来进行演示:
![]()
预处理不用多言,利用我们前十二次所学的pandas内容按需处理即可。
![]()
这一步比较死板,调用相关模型函数即可,线性回归是linear_model.LinearRegression,岭回归linear_model.Ridge ,这里调用逻辑回归函数。
![]()
通过fit我们可以得到预测变量与响应变量之间的回归模型,还能得到sigmod函数的权重与截距。
![]()
最后进行预测即可求出预测结果,我们看到前五个人里只有最后一个人可以存活。
结语
这就完了?对,这就完了! 这就是 sklearn 的魅力。我们不需要写几百行的 if-else 规则,只需要调用 fit(),剩下的数学计算全交给它。
既然模型已经跑通了,现在的核心问题变成了:我怎么知道这个模型好不好? 直接提交 Kaggle 太麻烦了,能不能在本地就给自己打分?
Day 14,我们将学习模型评估,让机器在本地进行模拟考!
那这里是浣熊,我们下次再见
更多游戏资讯请关注:电玩帮游戏资讯专区
电玩帮图文攻略 www.vgover.com
