工业革命!告别pandas,拥抱sk-learn——机器学习分享 Day 13

前言

大家中午好呀,我是浣能🦝,欢迎来到我们机器学习之旅的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