机器学习算法基础2

一、机器学习算法的实现-估计器

sklearn中,估计器(estimator)是一个重要的角色,分类器和回归器都属于estimator是一类实现了算法的API

1、用于分类的估计器:

sklearn.neighbors  k-近邻算法

sklearn.naive_bayes      贝叶斯

sklearn.linear_model.LogisticRegression     逻辑回归

2、用于回归的估计器:

sklearn.linear_model.LinearRegression     线性回归

sklearn.linear_model.Ridge      岭回归

3.估计器的工作流程

 4.分类算法-k近邻算法(knn)

定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

来源:KNN算法最早是由CoverHart提出的一种分类算法

计算距离公式:

两个样本的距离可以通过如下公式计算,又叫欧式距离

比如说,a(a1,a2,a3),b(b1,b2,b3)

 sklearn Knn API:

sklearn.neighbors. KNeighborsClassifier ( n_neighbors =5,algorithm='auto')
n_neighbors int, 可选(默认 = 5 ), k_neighbors 查询默认使用的邻居数
algorithm {‘auto’ ball_tree kd_tree ‘brute’} ,可选用于计算最近邻居的算法: ball_tree 将会使用 BallTree kd_tree 将使用 KDTree ‘auto’ 将尝试根据传递给 fit 方法的值来决定最合适的算法。 ( 不同实现方式影响效率 )
实例流程:
1.数据集的处理
2.分割数据集
3.数据集进行标准化
4.estimator流程进行分类预测
K-近邻算法优缺点:
优点:
简单,易于理解,易于实现, 无需估计参数,无需训练

缺点:
懒惰算法,对测试样本分类时的计算量大,内存开销大
必须指定 K 值, K 值选择不当则分类精度不能保证
使用场景:小数据场景,几千~几万样本,具体场景具体业务

去测试

5.分类模型的评估

estimator.score ()
一般最常见使用的是 准确率 ,即预测结果正确的百分比
混淆矩阵
在分类任务下,预测结果 (Predicted Condition) 与正确标记 (True Condition) 之间存在四种不同的组合,构成混淆矩阵 ( 适用于多分类 )

 

 

 分类模型评估API:

sklearn.metrics.classification_report

5.分类算法-朴素贝叶斯算法

应用:

 

 

 

 

 

 sklearn朴素贝叶斯实现API:

sklearn.naive_bayes. MultinomialNB
sklearn.naive_bayes.MultinomialNB ( alpha = 1.0 )
朴素贝叶斯分类
alpha :拉普拉斯平滑系数

6.模型的选择与调优

1、交叉验证

2、网格搜索

 超参数搜索-网格API

sklearn.model_selection. GridSearchCV

7.分类算法-决策树,随机森林

 

 常见决策树使用的算法:

ID3

信息增益 最大的准则

C4.5

信息增益比 最大的准则

CART

回归树: 平方误差 最小

分类树: 基尼系数   最小的准则 在sklearn中可以选择划分的原则

 

 随机森林:

  随机森林是一种集成学习方法,包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。

集成学习通过建立几个模型组合的来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立地学习和作出预测。这些预测最后结合成单预测,因此优于任何一个单分类的做出预测。

学习算法

根据下列算法而建造每棵树:

N 来表示训练用例(样本)的个数, M 表示特征数目。
输入特征数目 m ,用于确定决策树上一个节点的决策结果;其中 m 应远小于 M
N 个训练用例(样本)中以 有放回抽样 的方式,取样 N 次,形成一个训练集(即 bootstrap 取样),并用未抽到的用例(样本)作预测,评估其误差。
为什么要随机抽样训练集?  

如果不进行随机抽样,每棵树的训练集都一样,那么最终训练出的树分类结果也是完全一样

为什么要有放回地抽样?

  如果不是有放回的抽样,那么每棵树的训练样本都是不同的,都是没有交集的,这样每棵树都是有偏的,都是绝对片面的(当然这样说可能不对),也就是说每棵树训练出来都是有很大的差异的;而随机森林最后分类取决于多棵树(弱分类器)的投票表决。

集成学习API:
class  sklearn.ensemble.RandomForestClassifier ( n_estimators =10 criterion=’ gini ,

 max_depth=None, bootstrap=Truerandom_state=None)

随机森林分类器

n_estimatorsintegeroptionaldefault = 10) 森林里的树木数量

criteriastring,可选(default =“gini)分割特征的测量方法

max_depthintegerNone,可选(默认=无)树的最大深度

bootstrapbooleanoptionaldefault = True)是否在构建树时使用放回抽样

随机森林的优点

在当前所有算法中,具有极好的准确率
能够有效地运行在大数据集上
能够处理具有高维特征的输入样本,而且不需要降维
能够评估各个特征在分类问题上的重要性
对于缺省值问题也能够获得很好得结果
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值