pull/318/head
Flex Zhong 4 years ago
parent 3e7ad5beb3
commit 2a735e1e4e

@ -189,9 +189,11 @@ s1 tcT细胞一种白细胞
恭喜,你构建了第一个线性回归模型,使用它创建了预测,并将其显示在绘图中! 恭喜,你构建了第一个线性回归模型,使用它创建了预测,并将其显示在绘图中!
--- ---
## 🚀挑战 ## 🚀挑战
从这个数据集中绘制一个不同的变量。提示:编辑这一行:`X = X[:, np.newaxis, 2]`。鉴于此数据集的目标,你能够发现糖尿病作为一种疾病的进展情况吗? 从这个数据集中绘制一个不同的变量。提示:编辑这一行:`X = X[:, np.newaxis, 2]`。鉴于此数据集的目标,你能够发现糖尿病作为一种疾病的进展情况吗?
## [课后测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/10/) ## [课后测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/10/)
## 复习与自学 ## 复习与自学

@ -35,6 +35,7 @@
你对这些数据有什么看法?你已经看到了无法理解的字符串、数字、空格和奇怪值的混合体。 你对这些数据有什么看法?你已经看到了无法理解的字符串、数字、空格和奇怪值的混合体。
你可以使用回归技术对这些数据提出什么问题?“预测给定月份内待售南瓜的价格”怎么样?再次查看数据,你需要进行一些更改才能创建任务所需的数据结构。 你可以使用回归技术对这些数据提出什么问题?“预测给定月份内待售南瓜的价格”怎么样?再次查看数据,你需要进行一些更改才能创建任务所需的数据结构。
## 练习 - 分析南瓜数据 ## 练习 - 分析南瓜数据
让我们使用 [Pandas](https://pandas.pydata.org/)“Python 数据分析”的意思)一个非常有用的工具,用于分析和准备南瓜数据。 让我们使用 [Pandas](https://pandas.pydata.org/)“Python 数据分析”的意思)一个非常有用的工具,用于分析和准备南瓜数据。

@ -2,7 +2,9 @@
![线性与多项式回归信息图](../images/linear-polynomial.png) ![线性与多项式回归信息图](../images/linear-polynomial.png)
> 作者 [Dasani Madipalli](https://twitter.com/dasani_decoded) > 作者 [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [课前测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/13/) ## [课前测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/13/)
### 介绍 ### 介绍
到目前为止,你已经通过从我们将在本课程中使用的南瓜定价数据集收集的样本数据探索了什么是回归。你还使用 Matplotlib 对其进行了可视化。 到目前为止,你已经通过从我们将在本课程中使用的南瓜定价数据集收集的样本数据探索了什么是回归。你还使用 Matplotlib 对其进行了可视化。
@ -145,6 +147,7 @@ lin_pumpkins
X = lin_pumpkins.values[:, :1] X = lin_pumpkins.values[:, :1]
y = lin_pumpkins.values[:, 1:2] 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. 接下来,开始回归模型构建例程: 2. 接下来,开始回归模型构建例程:
@ -181,6 +184,7 @@ lin_pumpkins
plt.show() plt.show()
``` ```
![散点图显示包装与价格的关系](../images/linear.png) ![散点图显示包装与价格的关系](../images/linear.png)
4. 针对假设的品种测试模型: 4. 针对假设的品种测试模型:
@ -212,6 +216,7 @@ lin_pumpkins
多项式回归创建一条曲线以更好地拟合非线性数据。 多项式回归创建一条曲线以更好地拟合非线性数据。
1. 让我们重新创建一个填充了原始南瓜数据片段的dataframe 1. 让我们重新创建一个填充了原始南瓜数据片段的dataframe
```python ```python
new_columns = ['Variety', 'Package', 'City', 'Month', 'Price'] new_columns = ['Variety', 'Package', 'City', 'Month', 'Price']
poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns')
@ -227,6 +232,7 @@ lin_pumpkins
corr = poly_pumpkins.corr() corr = poly_pumpkins.corr()
corr.style.background_gradient(cmap='coolwarm') corr.style.background_gradient(cmap='coolwarm')
``` ```
这段代码创建了一个热图: 这段代码创建了一个热图:
![显示数据相关性的热图](../images/heatmap.png) ![显示数据相关性的热图](../images/heatmap.png)
@ -306,6 +312,7 @@ Scikit-learn包含一个用于构建多项式回归模型的有用API - `make_pi
```python ```python
pipeline.predict( np.array([ [2.75] ]) ) pipeline.predict( np.array([ [2.75] ]) )
``` ```
你会得到这样的预测: 你会得到这样的预测:
```output ```output
@ -317,6 +324,7 @@ Scikit-learn包含一个用于构建多项式回归模型的有用API - `make_pi
🏆 干得不错!你在一节课中创建了两个回归模型。在回归的最后一节中,你将了解逻辑回归以确定类别。 🏆 干得不错!你在一节课中创建了两个回归模型。在回归的最后一节中,你将了解逻辑回归以确定类别。
--- ---
## 🚀挑战 ## 🚀挑战
在此 notebook 中测试几个不同的变量,以查看相关性与模型准确性的对应关系。 在此 notebook 中测试几个不同的变量,以查看相关性与模型准确性的对应关系。

@ -2,6 +2,7 @@
![逻辑与线性回归信息图](../images/logistic-linear.png) ![逻辑与线性回归信息图](../images/logistic-linear.png)
> 作者 [Dasani Madipalli](https://twitter.com/dasani_decoded) > 作者 [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [课前测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/15/) ## [课前测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/15/)
## 介绍 ## 介绍
@ -39,6 +40,7 @@
![南瓜分类模型](../images/pumpkin-classifier.png) ![南瓜分类模型](../images/pumpkin-classifier.png)
> 作者 [Dasani Madipalli](https://twitter.com/dasani_decoded) > 作者 [Dasani Madipalli](https://twitter.com/dasani_decoded)
### 其他分类 ### 其他分类
还有其他类型的逻辑回归,包括多项和有序: 还有其他类型的逻辑回归,包括多项和有序:
@ -249,6 +251,7 @@ Seaborn提供了一些巧妙的方法来可视化你的数据。例如你可
🎓 加权平均值:计算每个标签的平均指标,通过按支持度(每个标签的真实实例数)加权来考虑标签不平衡。 🎓 加权平均值:计算每个标签的平均指标,通过按支持度(每个标签的真实实例数)加权来考虑标签不平衡。
✅ 如果你想让你的模型减少假阴性的数量,你能想出应该关注哪个指标吗? ✅ 如果你想让你的模型减少假阴性的数量,你能想出应该关注哪个指标吗?
## 可视化该模型的 ROC 曲线 ## 可视化该模型的 ROC 曲线
这不是一个糟糕的模型;它的准确率在 80% 范围内,因此理想情况下,你可以使用它来预测给定一组变量的南瓜颜色。 这不是一个糟糕的模型;它的准确率在 80% 范围内,因此理想情况下,你可以使用它来预测给定一组变量的南瓜颜色。
@ -264,6 +267,7 @@ fpr, tpr, thresholds = roc_curve(y_test, y_scores[:,1])
sns.lineplot([0, 1], [0, 1]) sns.lineplot([0, 1], [0, 1])
sns.lineplot(fpr, tpr) sns.lineplot(fpr, tpr)
``` ```
再次使用 Seaborn绘制模型的[接收操作特性](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc)或 ROC。 ROC 曲线通常用于根据分类器的真假阳性来了解分类器的输出。“ROC 曲线通常具有 Y 轴上的真阳性率和 X 轴上的假阳性率。” 因此,曲线的陡度以及中点线与曲线之间的空间很重要:你需要一条快速向上并越过直线的曲线。在我们的例子中,一开始就有误报,然后这条线正确地向上和重复: 再次使用 Seaborn绘制模型的[接收操作特性](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc)或 ROC。 ROC 曲线通常用于根据分类器的真假阳性来了解分类器的输出。“ROC 曲线通常具有 Y 轴上的真阳性率和 X 轴上的假阳性率。” 因此,曲线的陡度以及中点线与曲线之间的空间很重要:你需要一条快速向上并越过直线的曲线。在我们的例子中,一开始就有误报,然后这条线正确地向上和重复:
![ROC](../images/ROC.png) ![ROC](../images/ROC.png)
@ -274,10 +278,13 @@ sns.lineplot(fpr, tpr)
auc = roc_auc_score(y_test,y_scores[:,1]) auc = roc_auc_score(y_test,y_scores[:,1])
print(auc) print(auc)
``` ```
结果是 `0.6976998904709748`。 鉴于 AUC 的范围从 0 到 1你需要一个高分因为预测 100% 正确的模型的 AUC 为 1在这种情况下模型_相当不错_。 结果是 `0.6976998904709748`。 鉴于 AUC 的范围从 0 到 1你需要一个高分因为预测 100% 正确的模型的 AUC 为 1在这种情况下模型_相当不错_。
在以后的分类课程中,你将学习如何迭代以提高模型的分数。但是现在,恭喜!你已经完成了这些回归课程! 在以后的分类课程中,你将学习如何迭代以提高模型的分数。但是现在,恭喜!你已经完成了这些回归课程!
--- ---
## 🚀挑战 ## 🚀挑战
关于逻辑回归,还有很多东西需要解开!但最好的学习方法是实验。找到适合此类分析的数据集并用它构建模型。你学到了什么?小贴士:尝试 [Kaggle](https://kaggle.com) 获取有趣的数据集。 关于逻辑回归,还有很多东西需要解开!但最好的学习方法是实验。找到适合此类分析的数据集并用它构建模型。你学到了什么?小贴士:尝试 [Kaggle](https://kaggle.com) 获取有趣的数据集。

@ -25,8 +25,8 @@
- **模型放在哪里?** 在云端还是本地? - **模型放在哪里?** 在云端还是本地?
- **离线支持**。该应用程序是否必须离线工作? - **离线支持**。该应用程序是否必须离线工作?
- **使用什么技术来训练模型?** 所选的技术可能会影响你需要使用的工具。 - **使用什么技术来训练模型?** 所选的技术可能会影响你需要使用的工具。
- **使用Tensor flow**。例如如果你正在使用TensorFlow训练模型则该生态系统提供了使用[TensorFlow.js](https://www.tensorflow.org/js/)转换TensorFlow模型以便在Web应用程序中使用的能力。 - **使用 TensorFlow**。例如,如果你正在使用 TensorFlow 训练模型,则该生态系统提供了使用 [TensorFlow.js](https://www.tensorflow.org/js/) 转换 TensorFlow 模型以便在Web应用程序中使用的能力。
- **使用 PyTorch**。如果你使用[PyTorch](https://pytorch.org/)等库构建模型,则可以选择将其导出到[ONNX](https://onnx.ai/)(开放神经网络交换)格式,用于可以使用 [Onnx Runtime](https://www.onnxruntime.ai/)的JavaScript Web 应用程序。此选项将在Scikit-learn-trained模型的未来课程中进行探讨。 - **使用 PyTorch**。如果你使用 [PyTorch](https://pytorch.org/) 等库构建模型,则可以选择将其导出到 [ONNX](https://onnx.ai/)(开放神经网络交换)格式,用于可以使用 [Onnx Runtime](https://www.onnxruntime.ai/)的JavaScript Web 应用程序。此选项将在 Scikit-learn-trained 模型的未来课程中进行探讨。
- **使用 Lobe.ai 或 Azure 自定义视觉**。如果你使用 ML SaaS软件即服务系统例如 [Lobe.ai](https://lobe.ai/) 或 [Azure Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-15963-cxa) 来训练模型这种类型的软件提供了为许多平台导出模型的方法包括构建一个定制A PI供在线应用程序在云中查询。 - **使用 Lobe.ai 或 Azure 自定义视觉**。如果你使用 ML SaaS软件即服务系统例如 [Lobe.ai](https://lobe.ai/) 或 [Azure Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-15963-cxa) 来训练模型这种类型的软件提供了为许多平台导出模型的方法包括构建一个定制A PI供在线应用程序在云中查询。
你还有机会构建一个完整的 Flask Web 应用程序,该应用程序能够在 Web浏览器中训练模型本身。这也可以在 JavaScript 上下文中使用 TensorFlow.js 来完成。 你还有机会构建一个完整的 Flask Web 应用程序,该应用程序能够在 Web浏览器中训练模型本身。这也可以在 JavaScript 上下文中使用 TensorFlow.js 来完成。
@ -39,7 +39,7 @@
✅ 什么是 [Flask](https://palletsprojects.com/p/flask/) Flask 被其创建者定义为“微框架”,它提供了使用 Python 和模板引擎构建网页的 Web 框架的基本功能。看看[本学习单元](https://docs.microsoft.com/learn/modules/python-flask-build-ai-web-app?WT.mc_id=academic-15963-cxa)练习使用 Flask 构建应用程序。 ✅ 什么是 [Flask](https://palletsprojects.com/p/flask/) Flask 被其创建者定义为“微框架”,它提供了使用 Python 和模板引擎构建网页的 Web 框架的基本功能。看看[本学习单元](https://docs.microsoft.com/learn/modules/python-flask-build-ai-web-app?WT.mc_id=academic-15963-cxa)练习使用 Flask 构建应用程序。
✅ 什么是[Pickle](https://docs.python.org/3/library/pickle.html) Pickle🥒是一 Python模块用于序列化和反序列化 Python对象结构。当你“pickle”一个模型时你将其结构序列化或展平以在 Web上使用。小心pickle本质上不是安全的所以如果提示“un-pickle”文件请小心。生产的文件具有后缀`.pkl`。 ✅ 什么是 [Pickle](https://docs.python.org/3/library/pickle.html) Pickle🥒是一 Python 模块,用于序列化和反序列化 Python 对象结构。当你“pickle”一个模型时你将其结构序列化或展平以在 Web 上使用。小心pickle 本质上不是安全的所以如果提示“un-pickle”文件请小心。生产的文件具有后缀 `.pkl`
## 练习 - 清理你的数据 ## 练习 - 清理你的数据
@ -159,7 +159,7 @@ print(model.predict([[50,44,-12]]))
1. 首先在你的 _ufo-model.pkl_ 文件所在的 _notebook.ipynb_ 文件旁边创建一个名为 **web-app** 的文件夹。 1. 首先在你的 _ufo-model.pkl_ 文件所在的 _notebook.ipynb_ 文件旁边创建一个名为 **web-app** 的文件夹。
2. 在该文件夹中创建另外三个文件夹:**static**,其中有文件夹**css**和**templates`**。 你现在应该拥有以下文件和目录 2. 在该文件夹中创建另外三个文件夹:**static**,其中有文件夹 **css** **templates**。 你现在应该拥有以下文件和目录
```output ```output
web-app/ web-app/
@ -195,7 +195,7 @@ print(model.predict([[50,44,-12]]))
6. 现在,你已准备好创建另外三个文件来完成应用程序: 6. 现在,你已准备好创建另外三个文件来完成应用程序:
1. 在根目录中创建**app.py** 1. 在根目录中创建 **app.py**
2. 在 _templates_ 目录中创建**index.html**。 2. 在 _templates_ 目录中创建**index.html**。
3. 在 _static/css_ 目录中创建**styles.css**。 3. 在 _static/css_ 目录中创建**styles.css**。
@ -330,7 +330,7 @@ print(model.predict([[50,44,-12]]))
--- ---
## 🚀 挑战: ## 🚀 挑战
你可以在 Flask 应用程序中训练模型,而不是在 notebook 上工作并将模型导入 Flask 应用程序!尝试在 notebook 中转换 Python 代码,可能是在清除数据之后,从应用程序中的一个名为 `train` 的路径训练模型。采用这种方法的利弊是什么? 你可以在 Flask 应用程序中训练模型,而不是在 notebook 上工作并将模型导入 Flask 应用程序!尝试在 notebook 中转换 Python 代码,可能是在清除数据之后,从应用程序中的一个名为 `train` 的路径训练模型。采用这种方法的利弊是什么?

Loading…
Cancel
Save