*🌞欢迎来到机器学习的世界
🌈博客主页:卿云阁💌欢迎关注🎉点赞👍收藏⭐️留言📝
🌟本文由卿云阁原创!
🌠本阶段属于练气阶段,希望各位仙友顺利完成突破
📆首发时间:🌹2021年5月5日🌹
✉️希望可以和大家一起完成进阶之路!
🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!
声明:图片选自图解机器学习算法
目录
🍈 一、机器学习概要
机器学习包含不同的种类。根据不同的输入数据,分类如下。有监督学习无监督学习强化学习🥝有监督学习有标签🍔无监督学习没有标签这里举一个无监督学习的例子。假设各 科目之间存在着这样的关联性:擅长数学的学生也擅长理科,但不擅长语文和文科。对于这样的输入数据,在使用无监督学习的代表性算法主成分分析( Principal ComponentAnalysis , PCA )时,我们引入了新的轴,以说明被称为第一主成分的数据 。在第一主成分上的坐标可以解释为“小值表明该生擅长理科,大值表明该生擅长文科”, 可以将数学、理科、语文、文科这 4 个特征值归纳在 1 个轴上加以展示。
PCA 属于 降维 算法。降维是以更少的特征值来理解数据的算法。无监督学习 中也包括聚类 算法。聚类是将数据分类为几个簇(相似数据的集合)的算法。人类很难直接理解多 变量数据(由 3 个以上的变量构成的数据),通过聚类,数据能够以簇这种简单的形式进行展现。🍟强化学习
强化学习是以在某个环境下行动的智能体获得的奖励最大化为目标而进行学习的方法。在游戏(环境)中,玩家(智能体)为了获得赛点(奖 励)并取得最终的胜利,会无数次地重复尝试。拿游戏的例子来说,由于全部场景下所有操作的组合实在太多,很难通过人力进行评估,所以可以将游戏的场景和操作作为特征值,将游戏赛点作为目标变量,玩家无须依赖人力,通过无数次的游戏即可自行收集特征值和目标变量的数据组。强化学习在重复地玩游 戏、查看结果中不断学习更恰当的行动。🍉二. 机器学习的步骤
🌭收集数据主流机器学习库 scikit - learn 包 内置的数据,这个数据便于入手,可自由使用。主要的数据集1.our word in data 2.uci数据集官网 3.Github 4.paddlepaddle 5.鲸社区 6.https://coronavirus.jhu.edu/ 7.阿里天池
'filename': 'D:\\anaconda\\lib\\site-packages\\sklearn\\datasets\\data\\breast_cancer.csv'}
要注意数据集的位置
🍔数据的样子sepal length ( cm )、 sepal width ( cm )、 petal length ( cm )、 petal width ( cm )、Species 这 5 种信息,意思分别是鸢尾花的萼片长度、萼片宽度、花瓣长度、花瓣宽度、品种。前面 4 列是表示特征的特征值,最后 1 列是目标变量。在这个数据集中,目标变量的值为 0 、 1 、 2 这 3 个值之一。🍿有监督学习(分类)的例子本节将介绍基于有监督学习解决分类问题的实现方法。下面依次来看例题和实现方法。例题采用的是美国威斯康星州乳腺癌数据集。这个数据集中包含 30 个特征,标签的值 为“良性”或者“恶性”。 这是根据 30 个特征值判断结果是恶性还是良性的二元分类问题。1.导入 scikit-learn 内置的读取数据集的函数,并将所读取的数据保存在变量 data 中from sklearn.datasets import load_breast_cancer data = load_breast_cancer()
2.从数据集中取出特征值赋给 X,取出目标变量赋给 y。
X = data.data y = data.target
要想详细了解这个数据集,需要具备相应的医学知识,但是这里我们仅将其作为数值,对其进行有监督学习的二元分类。特征值共有 30 个,分为平均值、误差值、最差值 3 类,每类包括 10 项,分别为半径、纹理、面积等。这次我们着眼于平均值、误差值、最差值这 3 类数据中的平均值X = X[:, :10]
这行操作使得只有平均值被重新赋值给了变量 X,用作特征值的数据现在缩减到了 10 项。
这里使用的分类算法是逻辑回归。from sklearn.linear_model import LogisticRegression model = LogisticRegression()
为了使用逻辑回归模型,上面的代码导入了 scikit-learn 的 LogisticRegression 类,然后创建了 LogisticRegression 类的实例,并将已初始化的模型赋给了 model 。model.fit(X, y)
上面的代码使用 model ( LogisticRegression 的实例)的 fit 方法训练模型,方法的参数是特征值 X 和目标变量 y 。在调用 fit 方法后, model 成为学习后的模型。y_pred = model.predict(X)
上面的代码使用学习后的模型 model 的 predict 方法对学习时用到的特征值 X 进行预测,并将预测结果赋给变量 y_pred 。评估方法from sklearn.metrics import accuracy_score accuracy_score(y, y_pred)
关于评估方法,还有其他问题需要考虑。比如,只看正确率就能判断结果是否正确吗?根据数据的特性不同,有些情况下不能保证分类是正确的。这次用的数据中有“恶性”数据 212 条,“良 性”数据 357 条,可以说是在一定程度上均衡的数据。 对于“良性”“恶性”极不均衡的数据,光看正确率无法判断结果是否正确。我们再以另外一 组数据为例,看一下 30 岁 ~ 39 岁人群的癌症检测数据。通常来说,诊断为恶性的数据只占整体的 百分之几,大多数人没有肿瘤或者肿瘤是良性的。对于这样的数据,如果模型将所有的样本都判断 为良性的,那么尽管正确率很高,但光看正确率也不能正确评估这个模型.🧂无监督学习(聚类)的例子例题采用的是 scikit-learn 包内置的与葡萄酒种类有关的数据集。这个数据集有 13 个特征值,目标变量是葡萄酒种类 。由于这次介绍的是无监督学习的聚类算法,所以不使用目标变 量。简单起见,本次只使用 13 个特征值中的 alcohol (酒精度)和 color_intensity (色泽)两个特征 值 。我们对这个数据集应用 k -means 聚类算法,将其分割为 3 个簇。from sklearn.datasets import load_wine data = load_wine()
上面的代码用于导入 scikit-learn 内置的读取葡萄酒数据集的函数,并将读取的数据保存在变量 data 中。 接着,仅从数据集中选择 alcohol 列和 color_intensity 列作为特征值赋给 X 。这么做是为了在显示结果时,只用二维图形对结果进行可视化。X = data.data[:, [0, 9]]
特征值 X 是 178 行 2 列的数据。实现方法下面使用 k -means 算法实现聚类。from sklearn.cluster import KMeans n_clusters = 3 model = KMeans(n_clusters=n_clusters)
上面的代码导入并使用了实现 k -means 算法的 KMeans 类。初始化 KMeans 类,把它作为学习前的模型赋给变量 model 。通过 n_clusters 参数,指示模型将数据分为 3 个簇。pred = model.fit_predict(X)
上面的代码用于向学习前的模型 model 的 fit_predict 方法传入特征值数据。预测结果赋给变量 pred 。 下面看一下赋给 pred 的数据是如何聚类的。这里将聚类的结果可视化。由于本次使用的特征值只有两种,所以绘制二维图形即可实现结果的可视化。图 1-10 是以图形展示的聚类结果。图形中每个数据点对应的是一种葡萄酒。从数据点的颜色可以看出每种酒属于 哪个簇。3 个黄色的星星是各个簇的重心,是这 3 个簇的代表点。原本以酒精度、色泽变量表示的葡萄酒,现在以“属于哪个簇”这种简洁直观的形式展示了出来。此外,要想了解各个簇具有什么特征,只需查看作为代表点的重心的值即可。比如,第 3 个簇 =的特点是“酒精度低、色泽淡”。通过 k -means 算法实现的聚类是以“将酒精度百分之多少以上的数据分到第 1 个簇”之类的规则进行聚类的,这些规则不是由人预先设置的,而是由算法自动进行聚类得出的。这一点很重要。
🍓三、机器学习中的数学基础
1.数学公式和符号
向量
向量的第i个元素为xi
矩阵
矩阵的第i行第j列的元素为wij
总和
2.数学式的说明
均值、方差、标准差
协方差、相关系数
方差 - 协方差矩阵、相关矩阵● 方差 - 协方差矩阵方差 - 协方差矩阵是对两组以上的数据计算各自的协方差,然后汇总而成的矩阵。方差 - 协方 差矩阵用∑ 表示。