B站 | 微软Reactor_SH | 玩转 GitHub Copilot|面向 MLOps⧸数据科学家的 GitHub Copilot
GitHub Copilot 助力 MLOps 与数据科学高效编程
标签
媒体详情
- 上传日期
- 2025-06-05 16:14
- 来源
- https://www.bilibili.com/video/BV1fHQcYMEvV/
- 处理状态
- 已完成
- 转录状态
- 已完成
- Latest LLM Model
- gemini-2.5-pro-exp-03-25
转录
speaker 1: 大家好,欢迎参加今天的会议,我叫luag是get up的一名解决方案工程师。 我每天的工作主要是与客户和开发者交流,了解他们面临的一些日常挑战,并为他们带来一些顶级的开发工具,最终帮助他们更高效、更安全的编写代码。 Githucopy lot是一个非常前沿的开发工具。 今天我们将探讨copy lot的一个非常具体的应用,那就是当你在构建或训练机器学习模型或分析数据集以获取见解时,copy lot如何充当你的AI编程助手。 今天的议程非常简单明了,我们将探讨get up copy lot是什么,以及如何在代码编辑器中与他互动。 这可以通过copy lot聊天进行对话,或让copy lot为你生成代码。 一旦你定义了你的意图,我们将会看看数据预处理管道的不同步骤,这可以从一般了解你的数据集开始,到实际清理数据,识别空值、损坏值,从数据集中移除干扰项,并确保数据格式正确,以便输入到机器学习模型中。 我们会在每一步都使用GitHub,coplot, 只需定义你的意图,剩下的工作交给Copilot处理。 最后我们将了解如何训练机器学习模型以及抠如何帮助你理解其原理,接着我们会详细讨论模型评估过程,看看copy lot如何协助你完成,我们的目的是看看在构建创新且复杂的软件时,AI编程助手能做些什么,那么让我们开始吧,欢迎来到我的代码编辑器,左边是copchat,这是在编写代码时与cop互动的一种更对话的方式。 或者你也可以利用注释来提示coplot给你代码建议,或者通过点击编辑器中的slot start来使用内联copy lot编辑器,你可以再次输入提示让copy lot生成建议,我可以问copylot我需要进行哪些步骤来预处理我的数据。 以训练机器学习模型。 现在的目的是go by lot会利用我的提示给我一个非常具体的建议,帮助我作为开发者编写代码。 因此在这种情况下,我们会检查缺失值并进行数据类型转换,以确保分类数据具适合我的数据集。 他还建议检测异常值进行特征选择,并提供一些我可以利用的示例代码。 我现在可以按照一个low斗式的提问方式,从一个非常一般的问题开始,随着我编写代码,逐渐提出更具体的问题。 好吧,有了这些步骤,让我们实际开始编写代码并预处理数据。 现在预处理任何数据集的第一步是让我们了解这些数据是什么,它在向我们传达什么信息,以及数据集中是否有需要清理的部分,这可能是缺失值,数据集中损坏的值需要处理,以便我们的模型可以摄取并进行训练。 现在我要做的第一件事是让copy lot描述我的数据集。 你可以看到,通过简单的利用注释,copy lot将能够理解我的意图并开始生成代码。 在我们处理数据集并构建机器学习模型的过程中,你会看到我是如何将所有这些步骤委托给copier的。 它为我生成代码,而我作为工程师将更多的进行决策和战略方面的工作。 所以copy lot一开始就建议我使用describe功能,现在我可能不理解descriscribe功能显示的内容及这些指标的真正含义,所以我会突出显示这段代码,并要求库拜罗解释这段代码的含义。 你会看到,基于我的提示和上下文,copy罗将帮助我理解describe功能的作用以及这些不同的指标是什么。 所以在编写代码、构建机器学习模型、预处理或处理数据集的过程中,你可以与cop互动,确保填补你作为开发人员可能无意中存在的知识空白。 好吧,现在我想更深入的了解我的数据,看看是否能获得更多信息。 所以再次利用我的注释作为提示,我可以要求cop给我更多数据,我可以看到在某些情况下,我的数据集中实际上存在knowledge。 所以价格列和发动机容量列有knowledge值,我需要处理这些值。 既然这是我要执行的任务,我会再次要求cocoplot理解我的意图并开始生成相关代码,所以我现在要求copbe lot生成汽车销售数据框中美型缺失值的总和,因为我想了解实际缺失了多少数据,因此需要采取哪些步骤。 在这里我看到价格列有172个缺失值,发动机容量有150个缺失值。 现在将由我作为工程师来决定如何处理这些问题。 但我也可以请教coplot,看看它能提供什么可能的解决方案,所以我可以问co百聊天框处理数据框中缺失值有哪些方法? 作为开发者,我有能力和技术知识来判断是否需要填补或替换缺失值,但既然copy lot是我的AI编程助手,我可以和高布勒讨论找出最好的处理方法。 无论是替换值还是填补值,每一步的优缺点是什么? 根据我拥有的数据量,哪种方法更好? 最终请括百罗为我生成代码。 所以你可以看到copy lo会生成一些我可以利用的建议,它可以建议我删除缺失值,如果从逻辑上讲得通,我可以用一个常数填补缺失值。 如果数据的性质相关,我可以用均值、中位数或众数填补缺失值。 我可以使用机器学习算法来识别缺失值,或者在时间序列数据中进行前项填补或后项填补。 有了这些信息,作为开发者,我现在更有能力做出决策,并在处理数据时选择特定的路径。 我还可以进一步打印出数据集中可能有缺失值的实际性,然后处理这些缺失值。 所以对于价格列我会请copy lot删除这些行。 因为这是我的目标变量,我不想错过它,我不想用价设值填补这些。 行,所以copy lot理解我的意图,会从汽车销售数据中删除这一列。 对于发动机排量,我会使用数据集中最常常见的发动机排量,假设这可能是我会用来替换的数据。 好了,现在数据已经处理完毕,可以开始构建机器学习模型了。 每当你处理机器学习时,这总是一个循环。 你在获取数据,清理数据,确保数据可以适合模型。 然后你会开始准备数据,将其转换为正确的数据类型。 你将开始选择合适的算法并进行实验,看看哪些算法能给你带来最佳结果。 你将开始评估这些算法,以确保在评估过程中没有偏差。 最后你将随着进展不断改进的模型,在这个不断清洗数据训练模型和清洗数据的循环中,copy lot可以在每一步都陪伴你,确保你能够将一些手动任务委托给coer,从而更多的专注于你在这个循环中采取特定步骤的原因。 最终目标是让你作为开发者拥有更多的知识和更好的理解你所编写的代码,以及代码库中可能已经存在的代码,从而在不断前进中解决更复杂的问题。 所以考虑到这一点,让我们实际构建一个模型。 在这里,我想使用pandas将汽车销售数据框中的所有分类列转换为数值列,于是我开始写car sales。 Copy lot建议用get dummy功能,我们用现有数据框并将drop first设为。 所以copy lot能够理解我给出的提示,并给出一组对我有用的建议。 编码处理完毕后,我现在可以创建一个特征矩阵和一个目标向量,以便开始训练我的模型,然后进一步将数据集分为训练集和测试集。 让我们参考他们的评论,看看coilot能否提供这些建议,再一次,你可能会注意到,在某些情况下,coplot没有给出正确的建议,解决这个问题的方法是提供正确的上下文,或者非常清楚的说明你想让他做什么,你会发现,当你开始写代码时,几乎在每一个案例中,coplot都会建议可能的代码。 所以在这里,我在X变量中保存了汽车销售特征矩阵,而Y变量包含了价格列,这是我的实际目标向量。 我现在将这个数据集分为训练集和测试集。 再次,如果你看到我明确指定了要使用learn copy,lot会给我提供dradesk split功能供我使用,so you will使用A X train test,has x test y train pang使用train test功能,并决定测试集的比例为0.2,所以这里我的测试数据集将是20%,而我的训练数据集将是80%。 作为开发者,我可能不清楚random state参数的作用,所以我可以直接问Copilot的解释。 只需简单的右键点击选择copy lot并要求解释。 这会立即在聊天框中启动对话。 Copy lot会解释random state的作用,并提出一些可能的更改建议,以帮助你实现你的意图。 好了,现在我们已经处理完这些,是时候为我们的问题选择则合适的估计其并实际训练我们的模型了。 鉴于我试图预测的是连续值,在这种情况下回归是正确的选择。 所以我要让copy lot使用psylearn为我创建一个随机森林回归模型,并在训练数据上进行训练,了解我到目前为止所做的一切背景后,百会开始为我提供解决方案,所以我从sk learn的ensemble导入了随机森林回归器。 我正在初始化我的模型,并运行fit功能来实际训练我的机器学习模型。 现在你可能想更好的了解你的模型是如何工作的,其中一种方法就是打印出该模型的超参数。 所以在这种情况下,我可以列出与我的机器学习模型相关的超参数。 但不仅如此,我还可以请copy lord深入探讨这些超参数,帮助我更好的理解它们的含义。 所以我可以让科比勒解释随机森林回归模型的这些超参数。 Copy lot会详细描述每一个超参数。 如果你是一名机器学习工程师,你经常会调整这些参数,以便从你的机器学习模型中获得更高的性能或准确性。 而且你可能并不总是理解这些超参数的含义,所以你总是可以复制一个超参数请教cop聊天功能,获取它的详细解释,并利用这些知识来改进你的决策。 这就是cop币6对开发者的强大之处,不仅仅是生成代码或帮助你完成代码,你再用coy来填补你的知识空白,它为你节省了大量时间,因为你不再需要打开浏览器,谷歌搜索你的问题,打开十几个可能有解决方案的标签页,当你做完这些时,你已经脱离了工作状态,生产力受到了影响,达不到你期望的效果。 这就是为什么编辑器中的copy lot能弥补这个差距,让你成为更好的开发者,它更高效,更有生产力。 好吧,现在我们已经了解了这些超参数是什么,你可以开始实际评估模型了。 所以再次使用copy lot,我可以定义注释并使用模型进行预测。 Copy lot将调用predict功能。 我还可以要求使用军方误差功能。 最后我想使用score方法来评估模型,所以这次我的得分是0.68。 我想问问寇白了这算不算好成绩? 那么使用mole score功能的好成绩是什么? 理想情况下,copy可以帮助我理解这个功能的输出是什么,什么是一个好的得分,以及是否需要进一步测试。 所以最初得分为零意味着模型并不比总是预测目标变量的平均值更好。 而如果接近一模型,实际上表现的更好,所以我们现在是0.68,肯定有一些改进的空间,这是我们可以在接下来的过程中跟进的。 最后我还可以要求copy给我一个测试和预测变量的散点图。 由于这里几乎是一条直线,我可以说我在训练的数据中有相当的准确性。 如果我从数据集中删除一些异常值并再次进行这个过程,可能会表现的更好。 所以这里你基本上有一个相对简单但完整的机器学习管道。 从处理数据集到清理它,确保它准备好,训练你的模型,最后训练你的机器学习模型。 作为数据科学家和机器器学习工程师,你将处理大量复杂的数据集。 Copy lot会在每一步都陪伴你,帮助你处理所有这些不确定性和复杂性,最终编写更好、更安全的代码。 好的,非常感谢你,你一直陪伴我到现在我们已经覆盖了很多内容,所以我们很快进入总结是很重要的。 我们讨论了GitHub copy lot的功能,以及在编辑器中与它互动的多种方式,所以我们利用GitHub copichat t来理解现有代码,填补我们的知识空白,并真正讨论我们试图构建的内容。 我们在编辑器中用copy lot生成代码,通过注释来定义意图并让copy lot完成剩下的工作。 我们还探讨了清理和处理数据集的不同步骤,我们特别使用了pandas,并展示了GitHub Copilot如何为你提供pandas特定功能,理解你的意图并编写代码,让你专注于数据研究并获取见解,你不再需要记住功能或频繁切换标签页来完成任务,所有这些知识和信息都在编辑器中为你提供。 最后,我们看了如何使用seelearn训练和测试机器学习模型,以及get up go learn如何一步步地帮助我们利用psylearn理解机器学习模型本身,划分训练数据集和测试数据集,训练模型并进行评估,这些都是机器学习工程师或数据分析师日常会处理的步骤。 现在你有了一个AI编程助手,可以陪你走过这个循环的每一步,确保你更高效更安全的编写代码,最终专注于创新而不是基础构建。 非常感谢你今天的时间,我期待再次见到大家。
最新摘要 (详细摘要)
概览/核心摘要 (Executive Summary)
本转录文本主要记录了GitHub解决方案工程师luag关于GitHub Copilot在机器学习运维 (MLOps) 和数据科学领域应用的分享。核心观点是,GitHub Copilot作为一款AI编程助手,能够显著提升数据科学家和机器学习工程师的工作效率和代码质量。
分享中,luag演示了Copilot在整个机器学习工作流程中的辅助作用:
1. 交互方式:通过Copilot Chat进行对话式提问、理解代码、填补知识空白;通过编辑器内注释或直接指令让Copilot生成代码。
2. 数据预处理:Copilot协助理解数据集 (describe()函数解释)、识别缺失值 (如此次案例中“价格列”172个,“发动机容量列”150个)、提供处理缺失值的多种方案(删除、填充均值/中位数/众数、机器学习算法预测等),并根据用户决策生成相应pandas代码。
3. 模型构建与训练:Copilot辅助进行特征工程(如分类变量转数值变量的get_dummies)、创建特征矩阵与目标向量、划分训练集与测试集(使用train_test_split,测试集比例0.2),并根据用户指令创建和训练机器学习模型(如scikit-learn的随机森林回归器)。Copilot还能解释模型超参数的含义,帮助开发者调优。
4. 模型评估:Copilot协助生成预测代码、计算评估指标(如R²得分,此次为0.68),并能解释评估结果的意义,辅助生成可视化图表(如预测值与实际值的散点图)。
luag强调,Copilot通过将手动、重复性任务自动化,使开发者能更专注于决策、策略和创新,同时在编辑器内即时获取信息,避免了频繁切换上下文的干扰,从而提高了生产力并帮助编写更安全的代码。
GitHub Copilot 简介与交互方式
Speaker 1 (luag, GitHub解决方案工程师) 介绍了GitHub Copilot作为AI编程助手在MLOps和数据科学领域的应用。其主要目标是帮助开发者更高效、更安全地编写代码。
- 交互方式:
- Copilot Chat: 一种对话式交互方式,位于代码编辑器左侧。开发者可以:
- 提出问题,获取步骤建议。例如,提问“我需要进行哪些步骤来预处理我的数据。以训练机器学习模型。” Copilot会提供具体建议,如检查缺失值、数据类型转换、异常值检测、特征选择,并附带示例代码。
- 解释代码含义。例如,选中一段代码,要求Copilot解释其功能和指标。
- 讨论解决方案,填补知识空白。
- 内联代码生成 (Inline Copilot):
- 通过编写注释来定义意图,Copilot会据此生成代码。
- 通过点击编辑器中的“slot start”[不确定,原文为slot start,可能指启动Copilot的某种方式]并输入提示来生成建议。
- Copilot Chat: 一种对话式交互方式,位于代码编辑器左侧。开发者可以:
- 核心优势: 允许开发者将更多精力投入到决策和战略层面,而将代码生成等任务委托给Copilot。
数据预处理流程与 Copilot 应用
数据预处理是构建机器学习模型的关键步骤,Copilot能在每一步提供支持。
- 理解数据集:
- 第一步是了解数据内容和潜在问题(如缺失值、损坏值)。
- 通过注释提示,如“让copy lot描述我的数据集”,Copilot会生成使用如pandas
describe()功能的代码。 - 若不理解
describe()输出的指标,可选中代码让Copilot Chat解释。
- 识别缺失值:
- 通过注释提示,Copilot可以帮助进一步探索数据,发现如“价格列 (price column)”和“发动机容量列 (engine capacity column)”中存在“knowledge”[不确定,原文为knowledge,根据上下文应指空值或NaN]。
- 具体指令:“copbe lot生成汽车销售数据框中美型[不确定,原文为美型,应指某类型或全部]缺失值的总和”。
- 数据显示:
- 价格列:172个缺失值
- 发动机容量列:150个缺失值
- 处理缺失值:
- 开发者可以向Copilot Chat咨询处理方法,例如:“处理数据框中缺失值有哪些方法?”
- Copilot提供的可能方案包括:
- 删除缺失值。
- 用常数填充。
- 用均值、中位数或众数填充。
- 使用机器学习算法预测填充。
- 前向填充或后向填充(适用于时间序列数据)。
- 开发者根据Copilot的建议和自身判断做出决策:
- 对于“价格列”(目标变量):决定删除包含缺失值的行,Copilot生成相应代码。
- 对于“发动机排量”列:决定使用数据集中最常见的发动机排量进行填充,Copilot生成代码。
- Copilot的角色: 协助开发者理解数据、识别问题并根据开发者意图生成数据清洗代码,使开发者能专注于数据研究和获取见解,无需记忆具体函数或频繁切换查阅文档。
机器学习模型构建与训练
在数据清洗完毕后,进入模型构建和训练阶段,这是一个迭代循环的过程(获取数据 -> 清理 -> 准备 -> 选择算法 -> 实验 -> 评估 -> 改进)。
- 特征工程:
- 将分类列转换为数值列:通过提示“我想使用pandas将汽车销售数据框中的所有分类列转换为数值列”,并开始输入
car sales,Copilot会建议使用get_dummies功能,并设置drop_first=True。
- 将分类列转换为数值列:通过提示“我想使用pandas将汽车销售数据框中的所有分类列转换为数值列”,并开始输入
- 创建特征矩阵和目标向量:
- Copilot根据注释生成代码,将特征存入X变量,目标向量(价格列)存入Y变量。
- 数据集划分:
- 明确指定使用scikit-learn(原文为“learn copy”[不确定]),Copilot会提供
train_test_split功能。 - 参数设置:
test_size=0.2(测试集占20%,训练集占80%)。 - 对于不理解的参数(如
random_state),可以直接右键点击,选择Copilot解释,Copilot Chat会提供说明。
- 明确指定使用scikit-learn(原文为“learn copy”[不确定]),Copilot会提供
- 模型选择与训练:
- 问题类型:预测连续值,因此选择回归模型。
- 指令:“让copy lot使用psylearn[不确定,原文为psylearn,根据上下文应指scikit-learn]为我创建一个随机森林回归模型,并在训练数据上进行训练”。
- Copilot会:
- 从
sklearn.ensemble导入RandomForestRegressor。 - 初始化模型。
- 使用
fit()功能训练模型。
- 从
- 理解模型超参数:
- 可以要求Copilot列出模型相关的超参数。
- 进一步要求Copilot解释这些超参数的含义:“让科比勒[不确定,原文为科比勒,应指Copilot]解释随机森林回归模型的这些超参数”。
- 益处: 帮助机器学习工程师理解和调整超参数以优化模型性能,节省查阅文档的时间,保持工作流畅性。
模型评估与理解
模型训练完成后,需要对其性能进行评估。
- 进行预测:
- 通过注释提示“使用模型进行预测”,Copilot会调用
predict()功能。
- 通过注释提示“使用模型进行预测”,Copilot会调用
- 计算评估指标:
- 可以要求使用特定误差函数,如“军方误差功能”[不确定,原文为军方误差,可能指均方误差 Mean Squared Error]。
- 使用
score()方法评估模型,本次得分为 0.68。
- 理解评估结果:
- 向Copilot Chat提问:“这算不算好成绩?那么使用mole[不确定,原文为mole,应指model] score功能的好成绩是什么?”
- Copilot解释:得分接近0表示模型不比简单预测平均值好;接近1表示模型表现较好。0.68意味着有改进空间。
- 可视化分析:
- 要求Copilot生成“测试和预测变量的散点图”。
- 观察结果:“由于这里几乎是一条直线,我可以说我在训练的数据中有相当的准确性。”
- 提出改进方向:如果从数据集中删除一些异常值并重新执行流程,模型表现可能会更好。
总结与核心价值
Speaker 1 (luag) 总结了本次分享的内容和GitHub Copilot的核心价值。
- 回顾内容:
- 讨论了GitHub Copilot的功能及其多种交互方式(Copilot Chat用于理解和讨论,编辑器内Copilot用于代码生成)。
- 演示了清理和处理数据集(使用pandas)以及训练和测试机器学习模型(使用scikit-learn)的步骤。
- Copilot的核心价值:
- AI编程助手: 在机器学习的每一个环节(数据处理、清理、模型准备、训练、评估)提供支持。
- 提升效率: 将手动任务委托给Copilot,让开发者专注于特定步骤背后的原因和更复杂的问题。
- 填补知识空白: 帮助开发者更好地理解自己编写的代码以及现有代码库。
- 专注创新: 使开发者能够更高效、更安全地编写代码,最终专注于创新而非基础构建。
- 减少上下文切换: 所有知识和信息都在编辑器内提供,无需频繁打开浏览器搜索。
最终目标是让开发者拥有更多知识,更好地理解代码,从而解决更复杂的问题,并更高效、更有生产力地工作。