ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Python机器学习入门与Scikit-learn

2026/9/26 17:25:56 拓冰建站 浏览量
Python机器学习入门与Scikit-learn 机器学习入门与-learn一、正式踏上学习机器知识的道路, 开始接触由这一个专门库带来的初步体验。关于第一章的小节, 也就是第一小节所提到的内容, 它是为了梳理清楚这门技术在过往岁月和当前阶段的演变历史, 这其实是一场因为数据运用而引发的巨大变革过程。在计算机科学这片范围特别广的领域里, 出现了一个叫做机器学习的新东西。它并不是一下子就出现的, 是经过了很长时间的发展才有的。它慢慢从处理数据和统计学里面得到很多帮助。最后它变成了一种技术, 这种技术可以自动的去学一些规则。这些事情都是数据里面含有的。这就好比一个小孩子一样, 小孩子是通过看这个世界的样子来明白什么规则的。还有机器学习的算法也是这样子的。它们是需要非常多的数据的。然后通过这些数据去学一些模式和趋势。请你设想这样一个场景, 你就是一个园丁, 你想要让你自家的花园自己照顾自己, 在这种情况下你能够训练一台机器, 让这台机器去识别哪些植物是需要浇水的, 同时也让它知道哪些植物是需要修剪的, 机器学习就是这样的一种园丁角色, 它能够通过数据来完成学习过程, 从而学会如何做出来这些判断, 在当前这样的时代背景之下, 数据的重要性就和石油是一样的, 是非常珍贵的, 而机器学习则承担着像炼金术士那样的工作, 能够从这些数据当中提炼出价值。1.2 -learn的魅力为什么它是机器学习界的明星在众多机器学习框架中-learn因其简洁、易用、功能强大而脱颖而出。它就像是机器学习领域的一把瑞士军刀无论你是初学者还是经验丰富的开发者都能从中找到合适的工具。-learn不仅提供了丰富的算法实现还封装了许多实用的功能如数据预处理、模型选择、评估等。想象一下当你第一次踏入一个全新的城市时你可能需要一张地图来指引方向。-learn就像是机器学习领域的那张地图它不仅仅告诉你目的地在哪里还能帮你规划最优路径。无论是线性回归、逻辑回归还是更复杂的集成方法-learn都有现成的解决方案等着你去探索。1.3 环境搭建轻松上手的第一步为了踏上机器学习这一征程, 我们需要准备好我们的行囊。在当前的编程环境中安装-learn, 这一过程就像收拾行李一样简单明了。我们可以通过调用某个命令来创建一个虚拟环境, 这么做的好处是可以让所需的软件包被安装在一个全新且干净的环境当中。以下是实施起来相当简单的几个步骤:安装创建一个虚拟的环境。将虚拟环境进行激活。安装-learn现在, 你的开发环境已经完整地准备好了, 你可以立刻开始动手编写代码了。二、数据的准备阶段, 这项工作就像是给机器学习模型去精心提供营养丰富的食物材料。在数据清洗环节之中, 需要仔细地去去除那些杂质, 其目的是为了让整体数据变得更加纯净干净。数据这个东西, 它就跟那厨房里的食材是一个道理, 你说要是那食材不新鲜、也不干净, 那你想做出好吃的好菜来, 那是不可能的。同样的那个意思就是, 在咱们搞机器学习这个过程里头, 那个数据的质量, 它是直接去影响那个模型的性能表现的。再说这个数据清洗, 它就像是那个厨房里头的清洁工作, 需要你拿出那个细心劲来, 去把那些不全乎的、有错误的数据记录给一点点弄出去, 好保证说最后那个数据的准确性, 还有那个一致性, 都能得到保障。假设你正在厨房里忙活, 准备做一道菜, 结果手一碰发现有些蔬菜已经烂了, 那肯定得挑出来扔掉。处理数据的时候也一样, 经常能碰到缺失值、异常值这类坏东西。这时候就可以请个帮手来一起收拾。好比对付缺失值吧, 可以拿()这个函数去填空补数。import pandas as pd# 假设df是我们的DataFramedf.fillna(df.mean(), inplaceTrue)2.2 特征工程挖掘数据中的宝藏打造黄金特征特征工程, 它这个动作, 说白了就相当于是去挑选那些食材里面最精华、最宝贝的部分。一个特征要是选得好, 那绝对能够非常厉害地、极大地提升整个模型的最终表现效果。在这个时候, 我们必须从那些原始数据里面提取出最有价值、最核心的信息内容, 然后通过各种手段和步骤, 把这些提取出来的东西转化成为机器模型能够听懂、能够理解的表达形式和结构体系。比如说, 咱们也许手里头有这么一个东西, 它是一个关于房屋销售价格的数据集, 在这个数据集里面, 它把房屋的大小、位置这些个信息都给包罗进去了, 咱可以把它算一算, 搞出一个每平方英尺的价格出来的这么一个新的特征, 这么做能够给那模型帮上忙, 让它更明白价格跟面积这两个东西之间到底是个啥样的关系:# 假设df是我们之前处理过的DataFramedf[price_per_sqft] df[price] / df[sqft_living]2.3 数据集划分训练集与测试集的合理分配咱们在做饭的时候通常会留出来一丢丢食物拿去尝尝味道, 这样就能保证那个味儿是没问题的对不对, 这就跟做机器学习中得把数据分成一个叫做训练集的部分和一个叫做测试集的部分是一个道理了哈, 那个训练集主要拿来让模型去进行学习和训练, 而后头的那个测试集主要是用来给模型的成绩打个分儿看看它表现到底怎么样的。我们可以使用-learn中的函数来进行划分from sklearn.model_selection import train_test_split# 假设X是特征矩阵y是目标向量X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42)三、模型训练, 从零开始构建你的第一个预测模型, 3.1 线性回归, 讲述一个最简单的预测故事。线性回归, 它是机器学习中, 最基础, 而且也是, 最直观的一种模型, 它, 就像是讲述, 一条直线的故事, 借助着一条直线, 来把, 两个变量之间的关系进行描绘, 我们这里, 可以使用-learn这个东西, 然后训练一个比较简单的, 线性回归的模型, 最终去实现, 对房价的一种预测。from sklearn.linear_model import LinearRegression# 创建模型实例model LinearRegression()# 使用训练数据拟合模型model.fit(X_train, y_train)# 预测测试集的结果predictions model.predict(X_test)3.2 逻辑回归分类任务的入门砖逻辑回归这个名字虽然里面带有“回归”这两个字, 但是它实际上是一种用于分类的模型。这种模型能够帮助我们解决属于二分类类型的问题, 这就像是在做一道选择题一样, 让我们能够在两个不同的选项当中做出一个选择。在库里面, 我们可以使用指定的类代码来对模型进行训练操作:from sklearn.linear_model import LogisticRegression# 创建模型实例model LogisticRegression()# 使用训练数据拟合模型model.fit(X_train, y_train)# 预测测试集的结果predictions model.predict(X_test)3.3 决策树与随机森林让模型学会做决策要是把线性回归跟逻辑回归看成是那种特别简单的数学公式, 那决策树就像是一个脑子挺聪明的孩子一样。这个孩子可以靠着一个一个具体的规则来做出最终的决定。然后随机森林就不是只有一棵树了, 它是由很多棵这样的决策树一起组成的, 你可以把它想成是一片很有智慧的森林。有了这么多 trees 在背后撑着, 它就能把预测出来的结果搞得更准一些。我们可以使用, -learn这个工具来进行操作, 从而完成一个决策树模型的训练工作的。from sklearn.tree import DecisionTreeClassifier# 创建模型实例model DecisionTreeClassifier()# 使用训练数据拟合模型model.fit(X_train, y_train)# 预测测试集的结果predictions model.predict(X_test)四、关于模型的评估与优化, 我们需要对模型进行精细化打磨, 从而使其呈现出更加锐利的工作状态, 其中第四百一十个小节专门针对评估指标展开阐述, 其核心目的在于让大家深刻认识到了解模型具体表现所具有的极端重要性。评估模型, 这就好比是在品鉴美食, 我们必须得去弄清楚这道菜它到底是不是符合了我们心里的期望。在机器学习这个领域里头啊, 我们也存在有多种指标用来衡量模型的性能好坏, 例如说准确率精确率还有召回率这些情况。from sklearn.metrics import accuracy_score, precision_score, recall_score# 计算准确率accuracy accuracy_score(y_test, predictions)# 计算精确率precision precision_score(y_test, predictions)# 计算召回率recall recall_score(y_test, predictions)4.2 超参数调优寻找模型的最佳配方你把超参数想象成烹饪过程中使用的调味料, 这是因为不同的使用组合会给结果带来不一样的味道变化。通过不断地调整这些超参数, 我们能够找到那个最佳的模型配置方案。在中, 我们可以采取如下手段来执行网格搜索的操作:from sklearn.model_selection import GridSearchCV# 定义超参数网格param_grid {-- --max_depth: [3, 5, 7], min_samples_split: [2, 5, 10]}# 创建网格搜索对象grid_search GridSearchCV(estimatormodel, param_gridparam_grid, cv5)# 使用训练数据进行网格搜索grid_search.fit(X_train, y_train)# 获取最佳参数best_params grid_search.best_params_4.3 验证与交叉验证确保模型的可靠性和稳定性验证的过程, 就类似于去品尝那些来自不同批次的食物, 其目的是为了确保它们所呈现出来的品质是保持高度一致的。在机器学习这个领域里, 我们通常会选择使用交叉验证这一方法, 以此来对模型的表现进行考察, 进而衡量出它是否具备足够好的稳定性以及泛化能力。具体操作的时候, 我们会先把总的数据集合切割成为若干个小的部分, 然后在一轮又一轮的循环中, 每次都挑选出其中的某一个部分单独拿出来作为测试集加以使用, 同时将剩下的所有部分统一合并起来作为训练集去使用。通过这样不断重复的替换和训练过程, 我们就最终可以得到更加值得信赖且更具可靠性评估结果了。from sklearn.model_selection import cross_val_score# 计算交叉验证得分cv_scores cross_val_score(model, X, y, cv5)在这篇文章之中, 咱们是一起把那个机器学习模型的训练过程给探索了一下的, 就是从开始准备数据一直到后面的模型进行评估还有优化这么个环节里头去, 每一个步骤那都是起到了关键作用的一个重要环节, 然后下面这张插入的图片, 它是把这个整个过程中间那些需要特别留意的关键步骤都给概括总结出来了的。各位好, 这里是我的小博客领地, 也就是我们聊天的主要据点, 你能在这里见到我真是特别开心, 我希望大家能够体会到这儿那种非常轻松和让人愉悦的气息, 它就像老朋友在一块儿围着火炉夜晚说话那样, 让人感觉特别温暖和亲切。这里不仅有好玩的, 还有知识在等你, 特别欢迎你大胆说话, 分享你的想法和见解。你可以把这儿当成自己的家, 无论是忙完正事后歇个脚, 还是来找点灵感的地方我都盼着你能在这儿寻到属于你的那份开心与满足感。让我们一同去探寻那些新奇的事物, 并且去分享日常生活中那些细碎的一点一, 这样去做的话, 就能让这个小小的角落成为属于我们大家共同的精神家园。那么现在我们就赶紧加入到这场非常精彩的对话当中来。不管你是刚刚起步的新手, 还是在各个领域里面都很有经验的老玩家, 在这里面都有一个专门为你预留的位置存在。请你务必记得要在评论区里面去留下你自己的足迹, 因为我们这么做的目的是为了使我们彼此之间的交流能够变得更加地丰富多样的样子。最后我们也非常期待能够和你一起去共同创造出更多那些美好的回忆的踪迹。欢迎来到鞭笞我的这个地方。【内容介绍】各位朋友, 好了, 今天的探索路程现在已经结束了, 非常感谢你们一路上都陪伴着, 和大家一起走过了这一段充满了挑战以及乐趣的技术旅途。如果你内心有什么看法或者建议, 一定不要忘了在评论的分区里留言发表言论, 必须要明白的是, 每当你进行一次交流的时候, 那就会引发一次思想上的碰撞时刻, 也许你发出的这一点点微小灵感火花就能够把我下一个非常宏大的创作念头给点燃起来呢最后, 请不要忘记给本次所提供的文章内容进行点赞操作。同时, 请将该文章分享给你的朋友们, 从而让更多的人参与到我们所属的技术大家庭之中去。在我们的下一次见面之时, 我们期待能够有更多的故事与经验与大家进行分享。请大家记住这一点, 也就是在任何时间与任何地点的状况下, 只要每个人的内心当中都存在有热爱的状态, 那么其脚下的道路就一定能够获得相应的力量支持。对了, 各位看官, 小生才情有限, 笔墨之间难免会有不尽如人意之处, 还望多多包涵, 不吝赐教。咱们在这个小小的网络世界里相遇, 真是缘分一场我真心希望能和大家一起探索、学习和成长。虽然这里的文字可能不够渊博, 但也希望能给各位带来些许帮助。如果发现什么问题或者有啥建议, 请务必告诉我, 让我有机会做得更好感激的心情真是深厚到了极点, 并且希望我们双方能够共同携手努力加油向前。那么, 今天的分享活动, 到这里就已经全部结束了, 你们大家是否喜欢这份内容。在接下来漫长的生活日子里, 请务必记得给予你自己一个非常用力的、大大的拥抱动作, 因为你这个人, 实际上真的是相当出色的。咱们下一次见面的机会再见, 衷心祝愿你在每一天都能够拥有非常好的心情状态, 在技术方面的探索道路上, 越走越开阔, 越走越宽广。