python机器学习

机器学习算法:EM算法

杀马特。学长 韩版系。学妹 提交于 2019-11-27 12:09:16
EM算法 适用问题:概率模型参数估计 模型特点:含隐变量的概率模型 学习策略:极大似然估计、极大后验概率估计 学习的损失函数:对数似然损失 学习算法:迭代算法 EM算法 给定的训练样本是,样例间独立,我们想找到每个样例隐含的类别z,能使得p(x,z)最大。p(x,z)的最大似然估计如下: 第一步是对极大似然取对数,第二步是对每个样例的每个可能类别z求联合分布概率和。但是直接求一般比较困难,因为有隐藏变量z存在,但是一般确定了z后,求解就容易了。 EM是一种解决存在隐含变量优化问题的有效方法。竟然不能直接最大化,我们可以不断地建立的下界(E步),然后优化下界(M步)。这句话比较抽象,看下面的。 对于每一个样例i,让表示该样例隐含变量z的某种分布,满足的条件是。(如果z是连续性的,那么是概率密度函数,需要将求和符号换做积分符号)。比如要将班上学生聚类,假设隐藏变量z是身高,那么就是连续的高斯分布。如果按照隐藏变量是男女,那么就是伯努利分布了。 可以由前面阐述的内容得到下面的公式: import numpy as np #Numpy是Python的一个科学计算的库,提供了矩阵运算的功能 import math pro_A, pro_B, por_C = 0.5, 0.5, 0.5 data=[1,1,0,1,0,0,1,0,1,1] def pmf(i, pro_A, pro_B,

机器学习算法--KNN算法

▼魔方 西西 提交于 2019-11-27 11:09:39
KNN算法原理 KNN(K-Nearest Neighbor)最邻近分类算法是数据挖掘分类(classification)技术中最简单的算法之一,其指导思想是”近朱者赤,近墨者黑“,即由你的邻居来推断出你的类别。 KNN最邻近分类算法的实现原理:为了判断未知样本的类别,以所有已知类别的样本作为参照,计算未知样本与所有已知样本的距离,从中选取与未知样本距离最近的K个已知样本,根据少数服从多数的投票法则(majority-voting),将未知样本与K个最邻近样本中所属类别占比较多的归为一类。 Python实现KNN算法    1 import numpy as np 2 import operator 3 4 def createDataset(): 5   #四组二维特征 6   group = np.array([[5,115],[7,106],[56,11],[66,9]]) 7   #四组对应标签 8   labels = ('动作片','动作片','爱情片','爱情片') 9   return group,labels 10 11 def classify(intX,dataSet,labels,k): 12   ''' 13   KNN算法 14   ''' 15   #numpy中shape[0]返回数组的行数,shape[1]返回列数 16   dataSetSize

机器学习实战之决策树算法笔记

孤人 提交于 2019-11-27 08:36:24
简介 决策树类似于下图这种if-then 结构的判断算法。 必要的数学概念: 1. 信息熵 :度量信息混乱程度的一个概念,越混乱熵就越大,在概率论中用数学期望表示,在机器学习中按一下公式定义 ,所以信息熵是0-log2|y|之间的值 2. 信息增益 :用来度量某个特征对整个分类结果影响大小的量,实质是熵与特征条件熵的差,某个特征的信息增益越大,就说明这个特征越重要。*选取信息增益最大的特征可以作为划分特征的依据(ID3算法,不具备泛化能力,不能对新数据进行分类)。计算公式书本这么写的 3. 增益率 :信息增益偏向于特征取值多的那个特征,取值多会使得复杂、熵变大,因此求比值可以抵消这种复杂度。 特点是偏向选择特征数目少的特征,因此划分特征的时候选择信息增益高于平均水平特征中的增益比最大那个特征,而不是选择增益比最大的(C4.5算法) ,公式 4. 基尼指数 :类似于信息熵的一种计算方法,在CART算法中使用,公式 ID3算法书本实例计算信息熵和信息增益:我们拥有这样一个判断西瓜好不好的数据集 计算整体的信息熵, Pk 的取值是根据正负样本来取值的 ,也就是整体的信息熵计算中Pk看的是标签(最终结果),正样本为8/17,负样本是9/17. 然后计算某个特征信息熵的时候,它是建立在正负样本的基础上的,于是就比如色泽有三种,就拿青绿来举例子,正样本中为3个,负样本也是三个

python机器学习之决策树

做~自己de王妃 提交于 2019-11-27 08:25:23
决策树(Decision Tree)是一种非参数的有监督学习方法,它能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回归问题。决策树尤其在以数模型为核心的各种集成算法中表现突出。 开放平台:Jupyter lab 根据菜菜的sklearn课堂实效生成一棵决策树。 三行代码解决问题。 from sklearn import tree #导入需要的模块 clf = tree.DecisionTreeClassifier() #实例化 clf = clf.fit(X_train,Y_train) #用训练集数据训练模型 result = clf.score(X_test,Y_test) #导入测试集,从接口中调用所需要信息 利用红酒数据集画出一棵决策树。 从sklearn库中引入决策树、红酒数据集 from sklearn import tree from sklearn.datasets import load_wine from sklearn.model_selection import train_test_split 根据不纯度找出最佳节点和最佳的分歧方法。计算不纯度有两个指标:信息熵和基尼(Gini)指数。 例化决策树,DecisionTreeClassifier是分类树,DecisionTreeRegressor是回归树,tree

很不错的python 机器学习博客

一个人想着一个人 提交于 2019-11-27 06:54:09
http://www.cuijiahua.com/resource.html 曾看过的书,感觉一些很有用的学习资料,推荐给大家! Python基础: 网络教程推荐: 系统学习python3可以看 廖雪峰老师的教程 : 教程地址: 点击查看 2. 系统学完也不一定记得很清楚,这时我们需要一个快速的查询手册, 菜鸟教程 是一个不错的选择: 教程地址: 点击查看 3. 快速掌握知识的一个方法就是多加练习,对于初学者一味的做练习题显得过于枯燥, 实验楼 可以帮助你,找到你感兴趣的小实验: 学习地址: 点击查看 SQL基础 可能有的朋友会问,我学网路爬虫,学机器学习,跟SQL有关系吗?答案是有的,对于网络爬虫而言,一个数据持久化的好方法就是将爬取到的数据入库,方便后续分析处理。而对于机器学习而言,SQL更是必须掌握的技能,我们都知道,机器学习算法工程师的很大一部分工作就是做数据清洗和特征工程等数据预处理的工作,数据预处理的的好坏直接影响模型的最终精度。因此,作为数据预处理的得力助手SQL语言,我们必须好好掌握。 网络教程推荐: 我还是感觉, 菜鸟教程 是一个不错的选择,指令查询起来很方便,推荐给大家。 教程地址: 点击查看 书籍资源推荐: 1.想要系统学习SQL的,可以看下《 SQL必知必会 》,这本书还是蛮有名的(密码: hpfe): 点击下载 算法入门 书籍资源推荐: 1.

机器学习实战——3.决策树

情到浓时终转凉″ 提交于 2019-11-27 00:35:01
决策树常用来处理分类问题,也是最经常使用的数据挖掘算法。它之所以如此流行,一个很重要的原因就是使用者基本上不用了解机器学习算法,也不用深究它是如何工作的。下图所示的流程图就是一个决策树,正方形代表判断模块(decision block),椭圆形代表终止模块(terminating block),表示已经得出结论,可以终止运行。从判断模块引出的左右箭头称作分支(branch),它可以到达另一个判断模块或者终止模块。下图构造了一个假想的邮件分类系统,它首先检测发送邮件域名地址,如果地址为myEmployer,则将其放在分类“无聊时需要阅读的邮件”中。如果邮件不是来自这个域名,则检查邮件内容是否包含单词曲棒球,如果包含则将邮件归类到“需要及时处理的朋友邮件”,如果不包含则将邮件归类为“无需阅读的垃圾邮件”。 k-近邻算法可以完成很多分类任务,但是它最大的缺点就是无法给出数据的内在含义,决策树的主要优势就在于数据形式容易理解。 决策树算法能够读取数据集合,它的很多任务都是为了数据中所蕴含的知识信息,因此决策树可以使用不熟悉的数据集合,并从中提取出一系列规则,机器学习算法最终将使用这些机器从数据集中创造的规则。专家系统中经常使用决策树,而且决策树给出结果往往可以匹敌在当前领域具有几十年工作经验的人类专家。 3.1决策树的构建 决策树: 优点:计算复杂度不高,输出结果易于理解

Python机器学习,你怎么可以不懂EM算法?

≡放荡痞女 提交于 2019-11-26 21:44:05
EM算法: 最大期望算法是一类通过迭代进行极大似然估计的优化算法,通常作为牛顿迭代法的替代,用于对包含隐变量或缺失数据的概率模型进行参数估计。 在进行了解之前,我们先通过一个抛硬币的经典例子来解释EM算法的由来: 现在我们有两枚硬币 A 和 B,这两枚硬币和普通的硬币不一样,他们投掷出正面的概率和投掷出反面的概率不一定相同。 我们将 A 和 B 投掷出正面的概率分别记为θA和θB。独立地做 5 次试验: 随机的从这两枚硬币中抽取 1 枚,投掷 10 次,统计出现正面的次数,如下图: 在实验中,记录两组随机变量: X = (X1 , X2 , X3 , X4 , X5 ) Z = (Z1 , Z2 , Z3 , Z4 , Z5 ) 其中 Xi ∈ { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } 代表试验 i 中出现正面的次数, Zi∈{ A, B } 代表这次 试验投掷的是硬币 A 还是硬币 B。 目标是通过这个实验来估计θ= (θA ,θB) 的数值。 这个实 验中的参数估计是有完整数据的参数估计,因为我们不仅知道每次试验中投掷出正面的次数,还知道每次试验中投掷的是硬币 A还是B。可以很直接的估计θ的方法 这样的估计是统计上的极大似然估计的结果。用 P (X, Z | θ) 来表示 X,Z 的联合概率分布(其中带有参数 θ),对于上面的实验

对比《Spark机器学习第2版》PDF中英文代码+《白话机器学习算法》中英文PDF+数据来源

时光总嘲笑我的痴心妄想 提交于 2019-11-26 21:20:19
Spark是一个新的分布式计算框架,提供简洁明了的函数式API,完全兼容Hadoop生态系统。Spark自带一个支持分布式机器学习和包含若干数据挖掘模型的工具包Spark MLlib。该工具包正在重点开发中,但已包括多个针对常见机器学习任务的高质量、可扩展的算法。 《Spark机器学习第2版》结合案例研究讲解Spark 在机器学习中的应用,并介绍如何从各种公开渠道获取用于机器学习系统的数据。内容涵盖推荐系统、回归、聚类、降维等经典机器学习算法及其实际应用。新增了有关机器学习数学基础以及Spark ML Pipeline API 的章节,内容更加系统、全面、与时俱进。 《Spark机器学习第2版》中文PDF,394页,带目录,文字可复制;英文PDF,彩色配图,带目录,文字可复制。配套源代码。 下载: https://pan.baidu.com/s/13xNOave5kVDPqFvZHDNqJw 提取码: 7i43 Spark构建推荐引擎”展示了如何创建一个基于协同过滤的推荐模型。该模型将用于向给定用户推荐物品,以及创建与给定物品相似的物品清单。这一章还会讲到如何使用标准指标来评估推荐模型的效果。Spark构建分类模型阐述如何创建二元分类模型,以及如何利用标准的性能评估指标来评估分类效果。Spark构建回归模型”扩展了第6章中的分类模型以创建一个回归模型,并详细介绍了回归模型的评估指标

《从机器学习到深度学习基于scikit-learn与TensorFlow的高效开发实战》PDF代码分析

*爱你&永不变心* 提交于 2019-11-26 21:16:41
用通俗的语言讲解涵盖算法模型的机器学习,主要内容包括机器学习通用概念、三个基本科学计算工具、有监督学习、聚类模型、降维模型、隐马尔可夫模型、贝叶斯网络、自然语言处理、深度学习、强化学习、模型迁移等。在深入浅出地解析模型与算法之后,介绍使用Python相关工具进行开发的方法、解析经典案例,能理解、能设计、能编码、能调试,没有基础的在学习后也能够上手设计与开发机器学习产品。 推荐学习《从机器学习到深度学习:基于scikit-learn与TensorFlow的高效开发实战》,场景式机器学习实践,理论方面从人工智能与机器学习的基本要素讲起,逐步展开有监督学习、无监督学习、强化学习这三大类模型的应用场景与算法原理;实践方面通过金融预测、医疗诊断概率模型、月球登陆器、图像识别、写诗机器人、中国象棋博弈等案例,将机器学习应用在各行各业里,其中后三个案例使用了深度学习技术。 《从机器学习到深度学习:基于scikit-learn与TensorFlow的高效开发实战》PDF,369页,有目录,文字可复制;配有源代码。 下载: https://pan.baidu.com/s/1eTyELSW6n9dNffcXHw_oiQ 提取码: 65da 感觉深度学习中应用RNN实现一个写诗机器人,挺有意思,基于LSTM讲解开发步骤:网络架构、数据加载、搭建TensorFlow Graph 、解析LSTM RNN

【机器学习实战】KNN算法

非 Y 不嫁゛ 提交于 2019-11-26 20:40:12
机器学习作为人工智能的重要分支,同时也是数据挖掘中不可或缺的算法支撑。本人接触时间不短,但研究尚浅。我计划用python来实现机器学习中较为常见的算法。 看透了自己,便无须小看别人。 (老舍) 机器学习 机器学习是一类算法的总称,可以分为监督学习和无监督学习。半监督学习是结合监督学习与无监督学习的一种机器学习方法,成为近几年的研究热点。这些算法试图从大量历史数据中挖掘出其中隐含的规律,并用于预测或分类。机器学习的目标是使学到的模型能很好地适用于“新样本”,具有泛化能力。此外,监督学习对应分类和回归,而无监督学习对应聚类和密度估计。半监督学习作为我读研期间的主要研究方向,后面会重点介绍个人的一些成果和心得感悟。下面介绍KNN算法,它非常有效且易于掌握。 KNN算法 k-近邻算法采用测量不同特征值之间的距离方法进行分类。 工作原理 1 有一个训练数据集,并且知道其中数据与其对应标签。 2 输入无标签的新数据之后,将新数据的每个特征和样本集中的数据对应的特征进行比较,然后提取样本数据集中最相似(距离最近)数据的分类标签; 3 把前k个数据标签中出现次数最多的分类,作为新数据的分类结果。 Demo代码 from numpy import * import operator # 运算符模块(排序) # from os import listdir def createDataSet ( )