目录
创建 Polyglot Notebook
加载数据
数据概览
数据可视化
结论
探索性数据分析(EDA)是机器学习中的一个重要步骤,它可以帮助我们了解数据的分布、关系和异常值,从而为后续的建模和预测提供指导。
在这篇文章中,我将介绍如何使用 ML.NET DataFrames 和 ScottPlot 进行 EDA,一起探索著名的泰坦尼克号数据集。
这个数据集包含了泰坦尼克号上乘客的信息,以及他们是否在船沉没时幸存下来。我们可以在这里下载:https://web.stanford.edu/class/archive/cs/cs109/cs109.1166/stuff/titanic.csv
创建 Polyglot Notebook
首先,我们需要安装 Polyglot Notebooks,它是一个 Visual Studio Code 扩展。Notebooks 非常适合于数据科学家和机器学习工程师,可以让我们在同一个笔记本中编写代码、查看数据、绘制图表、编写文档,而不需要切换到其他工具。
我们可以在 VS Code 中搜索并安装 Polyglot Notebooks 扩展:
安装好扩展后,我们就可以创建一个新的 Polyglot Notebook 文件,并选择 C# 作为默认的代码语言。
加载数据
在开始编写代码之前,我们需要添加一些 NuGet 包,来使用 ML.NET DataFrames 和 ScottPlot 的功能。
我们可以在笔记本中使用
-
Microsoft.Data.Analysis: 提供 ML.NET DataFrames 的 API
-
ScottPlot: 提供绘图的 API
#r "nuget: Microsoft.Data.Analysis" #r "nuget:ScottPlot"
安装好这些包后,我们就可以开始编写代码了。
我们首先使用 ML.NET DataFrames 加载泰坦尼克号数据集,并显示前5行数据:
using Microsoft.Data.Analysis; var df = DataFrame.LoadCsv("titanic.csv"); df.Head(5)
数据概览
我们可以使用
对于任何数据,我们最好从这里开始,了解数据的基本情况。
可以看到,这个数据集包含 8 列,每列数据类型分别是
我们还可以使用
从这里我们可以发现一些有趣的事实:
-
平均年龄是 29.47 岁,最小年龄是 0.42 岁(可能是婴儿),最大年龄是 80 岁。
-
平均费用是 32.30 美元,最低费用是 0 美元(可能是免费乘客),最高费用是 512.33 美元(可能是豪华舱)。
-
平均幸存率是 0.38,也就是说只有三分之一的人活了下来。
你还可以使用 ML.NET DataFrames 提供的其他方法,了解数据集的更多情况,比如数据中的唯一值。
数据可视化
接下来,我们使用 ScottPlot 绘制图表,来更好地了解数据。
我们首先需要配置 ScottPlot:
using Microsoft.DotNet.Interactive.Formatting; Formatter.Register(typeof(ScottPlot.Plot), (p, w) => w.Write(((ScottPlot.Plot)p).GetImageHtml()), HtmlFormatter.MimeType);
然后就可以可视化数据中的唯一值:
我们还可以使用散点图,观察一下
从这个图表我们可以看出:
-
大部分人的费用都小于100,有钱人集中在20-50岁之间。
-
费用和年龄没有明显的线性关系,但是有一些离群值,比如费用超过500的人和年龄超过70的人。
结论
本文介绍了如何使用 ML.NET DataFrames 和 ScottPlot 进行 EDA 的基础知识。
通过 EDA,我们可以了解数据的基本情况、分布和关系,从而为后续的建模和预测提供指导。
ML.NET DataFrames 和 ScottPlot 是两个非常强大和方便的工具,可以让我们在 C# 中轻松地处理和可视化数据。
如果你想了解更多关于 ML.NET DataFrames 和 ScottPlot 的用法,请查看官方文档。
引入地址