本文主要是介绍【机器学习】 Udacity 笔记 01,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
因本人刚开始写博客,学识经验有限,如有不正之处望读者指正,不胜感激;也望借此平台留下学习笔记以温故而知新。这篇博客是复盘整理 Udacity 机器学习工程师课程的学习笔记。
-
在 scikit learn 中训练模型
在此部分,我们依然使用在前几个部分使用的数据集。
正在上传…重新上传取消
我们知道机器学习领域的一些最重要的分类算法,包括以下算法:
- 逻辑回归
- 神经网络
- 决策树
- 支持向量机
-
练习:训练你自己的模型
现在该你来发挥作用了!在下面的练习中,我们将使用以下数据集:
正在上传…重新上传取消
现在我们将有机会在实际数据中运用它们!在 sklearn 中非常简单,只需定义分类器,然后使用下面这行代码使分类器与数据拟合(称为
X
,y
):classifier.fit(X,y)
以下是我们定义的主分类器,以及必须导入的文件包:
逻辑回归
from sklearn.linear_model import LogisticRegression classifier = LogisticRegression()
神经网络
(注意:仅适用于 0.18 或更高版本的 scikit-learn)
from sklearn.neural_network import MLPClassifier classifier = MLPClassifier()
决策树
from sklearn.tree import DecisionTreeClassifier classifier = DecisionTreeClassifier()
支持向量机
from sklearn.svm import SVC classifier = SVC()
示例:逻辑回归
我们从头到尾地看看如何读取数据和训练分类器。假设使用上一部分的 X 和 y。然后,以下命令将训练逻辑回归分类器:
from sklearn.linear_model import LogisticRegression classifier = LogisticRegression() classifier.fit(X,y)
得出以下界线:
正在上传…重新上传取消
你的目标是使用上述其中一个分类器(逻辑回归、决策树或支持向量机,抱歉,此版本的 sklearn 依然无法使用神经网络,但是我们即将更新!),看看哪个分类器能够更好地拟合数据。
# import statements for the classification algorithms
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC# Logistic Regression Classifier
classifier = LogisticRegression()
classifier.fit(X,y)# Decision Tree Classifier
classifier = DecisionTreeClassifier()
classifier.fit(X,y)# Support Vector Machine Classifier
classifier = SVC()
classifier.fit(X,y)
使用 sklearn 可以轻松地将数据集拆分为训练数据和测试数据。我们只需输入 train_test_split
命令。该函数获得输入 X
和 y
,然后返回四项内容:
X_train
:训练输入数据X_test
:测试输入数据y_train
:训练标签y_test
:测试标签
该函数的调用如下所示:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25)
最后一个参数 test_size
是我们想用作测试数据的点所占百分比。在上述调用中,我们使用 25% 的数据作为测试数据,75% 作为训练数据。
我们练习下!我们将再次使用上一部分的数据集:
正在上传…重新上传取消
在下面的测验中,使用 train_test_split
函数将数据集拆分为训练集和测试集。测试集的大小必须是数据总大小的 20%。训练集称为 X_train
和 y_train
,测试集称为 X_test
和 y_test
。
点击测试答案
看看结果的可视化效果,训练集将画为圆圈,测试集将画为方形。完成后,点击提交答案
以便我们评估你的代码!
# Reading the csv file
import pandas as pd
data = pd.read_csv("data.csv")# Splitting the data into X and y
import numpy as np
X = np.array(data[['x1', 'x2']])
y = np.array(data['y'])# Import statement for train_test_split
from sklearn.cross_validation import train_test_split# TODO: Use the train_test_split function to split the data into
# training and testing sets.
# The size of the testing set should be 20% of the total size of the data.
# Your output should contain 4 objects.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2)
混淆矩阵
正在上传…重新上传取消
F1 得分练习
接下来,请记住 F1 得分的公式为:
\text{F1 Score} = 2 \cdot \frac{\text{Precision} * \text{Recall}}{\text{Precision} + \text{Recall}}F1 Score=2⋅Precision+RecallPrecision∗Recall
- 对于宇宙飞船,我们不允许出现任何故障零件,可以检查本身能正常运转的零件。因此,这是一个高召回率模型,因此 β = 2。
- 对于通知模型,因为是免费发送给客户,如果向更多的用户发送邮件也无害。但是也不能太过了,因为可能会惹怒用户。我们还希望找到尽可能多感兴趣的用户。因此,这个模型应该具有合适的精度和合适的召回率。β = 1 应该可行。
- 对于免费样品模型,因为寄送样品需要成本,我们不希望向不感兴趣的用户寄送样品。因此是个高精度模型。β = 0.5 应该可行。
这篇关于【机器学习】 Udacity 笔记 01的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!