Udacity课程机器学习方向笔记(1)机器学习入门

课程1:机器学习入门

lesson 1  

训练与测试模型

  • 本章解决问题

  • 概述

  • 自动调节参数

 

  • 1.我的模型表现如何;2. 检测模型后,如何根据这些指标改善模型。

  • 在解决问题中有各种算法(svm、决策树、神经网络等),哪种算法更适合解决某种问题需要有一个衡量工具,即各种指标和技巧,用来判断算法何时可以有效的处理数据,以及如何调整算法以便获得最佳效果。

  • 在scikit learn中训练模型:

在机器学习领域中有一些重要的分类算法,在sklearn中,只需要定义分类器,使用classifier.fit(X,y) 使分类器与数据拟合(称为X,y)

  • 逻辑回归(以这个为例) 线性算法

from sklearn.linear_model import LogisticRegression

classifier = LogisticRegression()

classifier.fit(X,y)

可由第一张图变为第二张图,更容易选出蓝点Udacity课程机器学习方向笔记(1)机器学习入门_第1张图片Udacity课程机器学习方向笔记(1)机器学习入门_第2张图片

  • 神经网络

from sklearn.neural_network import MLPClassifier

classifier = MLPClassifier()

  • 决策树

from sklearn.tree import DecisionTreeClassifier

classifier = DecisionTreeClassifier()

  • 支持向量机

from sklearn.svm import SVC

classifier = SVC()

正文内容

 

  • 调整向量机参数,如:

classifier = SVC(kernel = 'poly', degree = 2)

参数意义:

kernel:linear (线性), poly(多项式), rbf(高斯核)

degree:多项式内核的次数(如果选择了多项式内核)

gamma :γ 参数

C:C参数

 

  • 回归返回的是值,分类返回的是状态。

  • 为了证明模型的拟合程度和泛化程度,数据需要有训练集和测试集。可以导入:

from sklearn.model_selection import train_test_split 自动将数据分出训练集测试集。

  • X_train:训练输入数据

  • X_test:测试输入数据 (test_size=0.25 意思是将25%的数据用作测试数据)

  • y_train:训练标签

  • y_test:测试标签

测试集永远不能用来训练模型。

 

lesson 2 

评估指标

  • 混淆矩阵

 

 

  • 混淆矩阵

(true positive false negative;false positive true negative)

 

  • 准确率(true positive+true negative/4个总数)

当基数很大时,第二种情况数量较少时,不适合用准确率判断模型好坏。

  • 精度=真阳性/(真阳性+假阳性)X

  • 召回率(在标记为阳性的点中,哪些正确地被预测为阳性)Y

  • F1(调和平均数始终小于算数平均数)F1=2XY/(X+Y)

  • F-β 得分 F-β=(1+β^2)XY/(β^2*X+Y)

β取值在0到无限大之间,β=0,则得出的是精度;β=无限大,则得到的召回率。

  • ROC曲线 (受试者工作特性曲线) roc下曲线面积越大,模型就越好.(面积可以为0)

接受者操作特性曲线是指在特定刺激条件下,以被试在不同判断标准下所得的false positive rate FP/(FP+TN)横坐标,以true positive rate  TP/(TP+FN)为纵坐标,画得的各点的连线。

  • 回归指标

平均绝对误差

均方误差

R2分数:R2=1-(线性回归模型均方误差/简单模型均方误差) R2越小,说明两个误差很接近,模型效果不好。

lesson 3

模型选择

判断模型是否选的正确

  • 交叉验证(在不使用测试数据的情况下,选择最佳模型,方法是从训练集中规定一部分作为交叉验证集,当训练集的误差和交叉验证集误差最接近的模型就是最佳模型)

  • K折交叉验证(将数据拆包,每次选取不同的数据作为测试集) 帮助预防过拟合

  • 欠拟合模型(训练误差曲线和交叉验证误差曲线互相接近交于一个不低的点)

           最佳模型(TRAINING ERROR和CV ERROR互相接近并交于一个很低的点)

           过拟合模型(曲线不会相互接近,交叉验证集保持很高,训练集保持很低)

如果模型有多个参数(称为超参数,则使用网格搜索确定F1值最高的模型)在sklearn中将选择的参数形成一个字典,再创建一个模型评分(如F1)。

  • 在sklern中的网格搜索:

 假设我们想要训练支持向量机,并且我们想在以下参数之间做出决定:

  • kernel:polyrbf

  • C:0.1,1 或 10。

 注:这些参数对于你来说,现在可以简单了解一下,我们将在该纳米学位接下来的监督学习部分中详细了解它们。

具体步骤如下所示:

1. 导入 GridSearchCV

from sklearn.model_selection import GridSearchCV

2.选择参数:

现在我们来选择我们想要选择的参数,并形成一个字典。 在这本字典中,键 (keys) 将是参数的名称,值 (values) 将是每个参数可能值的列表。

parameters = {'kernel':['poly', 'rbf'],'C':[0.1, 1, 10]}

3.创建一个评分机制 (scorer)

我们需要确认将使用什么指标来为每个候选模型评分。 这里,我们将使用 F1 分数。

from sklearn.metrics import make_scorer

from sklearn.metrics import f1_score

scorer = make_scorer(f1_score)

4. 使用参数 (parameter) 和评分机制 (scorer) 创建一个 GridSearch 对象。 使用此对象与数据保持一致 (fit the data) 。

# Create the object.grid_obj = GridSearchCV(clf, parameters, scoring=scorer)

# Fit the datagrid_fit = grid_obj.fit(X, y)

5. 获得最佳估算器 (estimator)

best_clf = grid_fit.best_estimator_

现在你可以使用这一估算器best_clf来做出预测。

总结Summary

  • 学习如何训练模型、如何测试模型

  • 如何用某些指标来评估模型效果

  • 通过调参改善模型

 

你可能感兴趣的:(学习笔记)