@ -5,32 +5,32 @@
## [课前测 ](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/13/ )
### 介绍
到目前为止,您 已经通过从我们将在本课程中使用的南瓜定价数据集收集的样本数据探索了什么是回归。您 还使用Matplotlib对其进行了可视化。
到目前为止,你 已经通过从我们将在本课程中使用的南瓜定价数据集收集的样本数据探索了什么是回归。你 还使用Matplotlib对其进行了可视化。
现在您已准备好深入研究ML的回归。 在本课中,您 将详细了解两种类型的回归: _基本线性回归_和_多项式回归_, 以及这些技术背后的一些数学知识。
现在你已准备好深入研究ML的回归。 在本课中,你 将详细了解两种类型的回归: _基本线性回归_和_多项式回归_, 以及这些技术背后的一些数学知识。
> 在整个课程中,我们假设数学知识最少,并试图让来自其他领域的学生也能接触到它,因此请使用笔记、🧮标注、图表和其他学习工具以帮助理解。
### 前提
您现在应该熟悉我们正在检查的南瓜数据的结构。您 可以在本课的_notebook.ipynb_文件中找到它。 在这个文件中, 南瓜的价格显示在一个新的dataframe 中。确保可以在Visual Studio Code代码的内核中运行这些notebooks。
你现在应该熟悉我们正在检查的南瓜数据的结构。你 可以在本课的_notebook.ipynb_文件中找到它。 在这个文件中, 南瓜的价格显示在一个新的dataframe 中。确保可以在Visual Studio Code代码的内核中运行这些notebooks。
### 准备
提醒一下,您 正在加载此数据以提出问题。
提醒一下,你 正在加载此数据以提出问题。
- 什么时候买南瓜最好?
- 一箱微型南瓜的价格是多少?
- 我应该买半蒲式耳还是1 1/9蒲式耳?
让我们继续深入研究这些数据。
在上一课中,您 创建了一个Pandas dataframe并用原始数据集的一部分填充它, 按蒲式耳标准化定价。但是, 通过这样做, 您 只能收集大约400个数据点, 而且只能收集秋季月份的数据。
在上一课中,你 创建了一个Pandas dataframe并用原始数据集的一部分填充它, 按蒲式耳标准化定价。但是, 通过这样做, 你 只能收集大约400个数据点, 而且只能收集秋季月份的数据。
看看我们在本课随附的notebook中预加载的数据。数据已预加载, 并绘制了初始散点图以显示月份数据。也许我们可以通过更多地清理数据来获得更多关于数据性质的细节。
## 线性回归线
正如您 在第1课中学到的, 线性回归练习的目标是能够绘制一条线以便:
正如你 在第1课中学到的, 线性回归练习的目标是能够绘制一条线以便:
- ** 显示变量关系**。 显示变量之间的关系
- ** 作出预测**。 准确预测新数据点与该线的关系。
@ -61,21 +61,21 @@
>
> 计算直线的数学必须证明直线的斜率,这也取决于截距,或者当`X = 0`时`Y`所在的位置。
>
> 您 可以在[Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html)网站上观察这些值的计算方法。另请访问[这个最小二乘计算器](https://www.mathsisfun.com/data/least-squares-calculator.html)以观察数字的值如何影响直线。
> 你 可以在[Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html)网站上观察这些值的计算方法。另请访问[这个最小二乘计算器](https://www.mathsisfun.com/data/least-squares-calculator.html)以观察数字的值如何影响直线。
## 相关性
另一个需要理解的术语是给定X和Y变量之间的**相关系数**。使用散点图,您 可以快速可视化该系数。数据点散布在一条直线上的图具有高相关性, 但数据点散布在X和Y之间的图具有低相关性。
另一个需要理解的术语是给定X和Y变量之间的**相关系数**。使用散点图,你 可以快速可视化该系数。数据点散布在一条直线上的图具有高相关性, 但数据点散布在X和Y之间的图具有低相关性。
一个好的线性回归模型将是一个用最小二乘回归法与直线回归得到的高( 更接近于1) 相关系数的模型。
✅ 运行本课随附的notebook并查看City to Price散点图。根据您 对散点图的视觉解释,将南瓜销售的城市与价格相关联的数据似乎具有高相关性或低相关性?
✅ 运行本课随附的notebook并查看City to Price散点图。根据你 对散点图的视觉解释,将南瓜销售的城市与价格相关联的数据似乎具有高相关性或低相关性?
## 为回归准备数据
现在您已经了解了本练习背后的数学原理,可以创建一个回归模型,看看您 是否可以预测哪个南瓜包装的南瓜价格最优惠。为节日购买南瓜的人可能希望此信息能够优化他们如何购买南瓜包装。
现在你已经了解了本练习背后的数学原理,可以创建一个回归模型,看看你 是否可以预测哪个南瓜包装的南瓜价格最优惠。为节日购买南瓜的人可能希望此信息能够优化他们如何购买南瓜包装。
由于您将使用Scikit-learn, 因此没有理由手动执行此操作( 尽管您 可以! ) 。在课程notebook的主要数据处理块中, 从Scikit-learn添加一个库以自动将所有字符串数据转换为数字:
由于你将使用Scikit-learn, 因此没有理由手动执行此操作( 尽管你 可以! ) 。在课程notebook的主要数据处理块中, 从Scikit-learn添加一个库以自动将所有字符串数据转换为数字:
```python
from sklearn.preprocessing import LabelEncoder
@ -83,9 +83,9 @@ from sklearn.preprocessing import LabelEncoder
new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform)
```
如果您现在查看new_pumpkins dataframe, 您 会看到所有字符串现在都是数字。这让你更难阅读, 但对Scikit-learn来说更容易理解!
如果你现在查看new_pumpkins dataframe, 你 会看到所有字符串现在都是数字。这让你更难阅读, 但对Scikit-learn来说更容易理解!
现在,您 可以对最适合回归的数据做出更有根据的决策(不仅仅是基于观察散点图)。
现在,你 可以对最适合回归的数据做出更有根据的决策(不仅仅是基于观察散点图)。
尝试在数据的两点之间找到良好的相关性,以构建良好的预测模型。事实证明,城市和价格之间只有微弱的相关性:
@ -139,13 +139,13 @@ lin_pumpkins
415 rows × 2 columns
```
1. 现在您 可以分配X和y坐标数据:
1. 现在你 可以分配X和y坐标数据:
```python
X = lin_pumpkins.values[:, :1]
y = lin_pumpkins.values[:, 1:2]
```
✅ 这里发生了什么?您 正在使用[Python slice notation](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295)来创建数组来填充`X`和`y`。
✅ 这里发生了什么?你 正在使用[Python slice notation](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295)来创建数组来填充`X`和`y`。
2. 接下来,开始回归模型构建例程:
@ -170,7 +170,7 @@ lin_pumpkins
Model Accuracy: 0.3315342327998987
```
3. 您 可以将过程中绘制的线条可视化:
3. 你 可以将过程中绘制的线条可视化:
```python
plt.scatter(X_test, y_test, color='black')
@ -205,7 +205,7 @@ lin_pumpkins
✅ 这里有可以使用多项式回归数据的[更多示例](https://online.stat.psu.edu/stat501/lesson/9/9.8)
再看一下上图中品种与价格之间的关系。这个散点图看起来是否应该用一条直线来分析?也许不是。在这种情况下,您 可以尝试多项式回归。
再看一下上图中品种与价格之间的关系。这个散点图看起来是否应该用一条直线来分析?也许不是。在这种情况下,你 可以尝试多项式回归。
✅ 多项式是可能由一个或多个变量和系数组成的数学表达式
@ -230,7 +230,7 @@ lin_pumpkins
这段代码创建了一个热图:
![显示数据相关性的热图 ](../images/heatmap.png )
查看此图表,您 可以直观地看到Package和Price之间的良好相关性。所以你应该能够创建一个比上一个更好的模型。
查看此图表,你 可以直观地看到Package和Price之间的良好相关性。所以你应该能够创建一个比上一个更好的模型。
### 创建管道
@ -260,7 +260,7 @@ Scikit-learn包含一个用于构建多项式回归模型的有用API - `make_pi
### 创建序列
此时,您 需要使用_排序好的_数据创建一个新的dataframe ,以便管道可以创建序列。
此时,你 需要使用_排序好的_数据创建一个新的dataframe ,以便管道可以创建序列。
添加以下代码:
@ -276,11 +276,11 @@ Scikit-learn包含一个用于构建多项式回归模型的有用API - `make_pi
plt.show()
```
您 通过调用`pd.DataFrame`创建了一个新的dataframe。然后通过调用`sort_values()`对值进行排序。最后你创建了一个多项式图:
你 通过调用`pd.DataFrame`创建了一个新的dataframe。然后通过调用`sort_values()`对值进行排序。最后你创建了一个多项式图:
![显示包装与价格关系的多项式图 ](../images/polynomial.png )
您可以看到更适合您 的数据的曲线。
你可以看到更适合你 的数据的曲线。
让我们检查模型的准确性:
@ -314,7 +314,7 @@ Scikit-learn包含一个用于构建多项式回归模型的有用API - `make_pi
参照图像,这确实有道理!而且,如果这是一个比前一个更好的模型,看同样的数据,你需要为这些更昂贵的南瓜做好预算!
🏆 干得不错!您在一节课中创建了两个回归模型。在回归的最后一节中,您 将了解逻辑回归以确定类别。
🏆 干得不错!你在一节课中创建了两个回归模型。在回归的最后一节中,你 将了解逻辑回归以确定类别。
---
## 🚀挑战