(sklearn)机器学习(七)分类算法

分类算法

  • 1 sklrean转换器和预估器
  • 2 k-近邻算法(KNN算法)
  • 3 模型选择与调优
  • 4 朴素贝叶斯算法
  • 5 决策树
  • 6 决策树可视化
  • 7 随机森林

1 sklrean转换器和预估器

1.用于分类的估计器:

from sklearn.neighbors  # k-近邻算法
from sklearn.naive_bayes  # 贝叶斯
from sklearn.linear_model.LogisticRegression  # 逻辑回归
from sklearn.tree  # 决策树与随机森林

2.用于回归的估计器:

# 线性回归
from sklearn.linear_model.LinearRegression

# 岭回归
from sklearn.linear_model.Ridge
# 聚类
from sklearn.cluster.KMeans

估计器工作流程:
    1.实例化一个 estimator
    2.estimator.fit(x_train, y_train)计算
        x_train: 特征值
        y_train: 目标值
        调用完毕--生成--模型
    3.模型评估:
        1)直接比对真实值和预测值
          y_predict = estimator.predict(x_test)
        2) 算准确率
          accuracy = estimator.score(x_test, y_test)

2 k-近邻算法(KNN算法)

核心思想:你的“邻居”来推算出你的类别
原理:
k=1 容易受异常值的影响
k值过大时,样本不均衡的影响

如何确定是邻居?
    距离公式:欧式距离、曼哈顿距离、郎可夫斯基距离
from sklearn.neighbors.KNeighborsClassifier

API

sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, algcrithm='auto')

   n_neighbors: int可选(默认=5),k_neighbors查询默认使用的邻居数
   algcrithm:{'auto','ball_tree','kd_tree','brute'},
   可选用于计算最近邻居的算法:
   ball_tree将会使用BallTree,
   kd_tree将使用KDTree。
   auto将尝试根据传递给fit方法的值来决定最合适的算法。

3 模型选择与调优

超参数搜索-网格搜索(Grid Sears)

from sklearn.model_selection import GridSearchCV

GridSearchCV(estimator=, param_grid=, cv=None)
#     对估计器的指定参数值进行详尽搜索
#     estimator:估计器对象
#     param_grid:估计器参数(dict){"n_neighbors":[1,3,5,7]}
#     cv:指定几折交叉验证
#     fit():输入训练数据
#     score():准确率
#     分析结果:
#         最佳参数:best_params_
#         最佳结果:best_score_
#         最佳估计器:best_estimator_
#         交叉验证结果:cv_results_
#           如:estimator.best_params_

4 朴素贝叶斯算法

什么是朴素贝叶斯分类方法法?
联合概率、条件概率与相互独立
贝叶斯公式

公式分为三部分:
P©: 每个文档类别的概率(某个文档类别数/总文档数量)
P(W | C):给定类别下特征的概率

from sklearn.naive_bayes import MultinomialNB

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

优点:
发源于古典数学理论,有稳定的分类效率
对缺失数据不太敏感,算法也比较简单,常用于文本分类
分类准确度高,速度快
缺点:
由于使用了样本属性独立性的假设,所以如果特征属性有关联时其效果不好

5 决策树

信息熵的公式以及作用
信息增益的公式作用
应用信息增益实现计算特征的不确定性减少程度
决策树的三种算法实现

认识决策树:
如何高效的进行决策?
特征的先后顺序

分类原理:类似于if-else

from sklearn.tree import DecisionTreeClassifier

DecisionTreeClassifier(criterion='gini', max_depth=None,random_state=None)
    决策树分类器
    criterion:默认是'gini'系数,也可以选择信息增益的熵'entropy'
    max_depth:树的深度大小
    random_state:随机数种子

6 决策树可视化

1.保存树的结构到dot文件

from sklearn.tree import export_graphviz
export_graphviz(estimator, out_file='tree.dot', feature_names=['',''])

优点:
简单理解,树木可视化

缺点:
决策树学习者可以创建不能很好地推广数据的过于复杂的树这被

改进:
减枝cart算法(决策树API当中已经实现,随机森林有相关介绍)
随机森林

7 随机森林

什么是集成学习方法?
什么是随机森林?
随机
森林:包含多个决策树的分类器
随机森林原理:
训练集:特征值 目标值
随机:
两个随机:
1)训练集随机
bootstrap 随机有放回抽样
2)特征随机

from sklearn.ensemble import RandomForestClassifier

RandomForestClassifier(n_estimators=10,
                       criterion='gini',
                       max_depth=None,
                       bootstrap=True,
                       random_state=None,
                       min_samples_split=2)
    随机森林
    n_estimators:integer,optional (default = 10)森林里的树木数量120,200,300,500,800,1200
    criterion:string,可选(default = 'gini')分割特征的测量方法
    max_depth:integer或None,可选(默认=无)树的最大深度5,8,15,25,30
    max_features="auto",每个决策树的最大特征数量
        if "auto",max_features=sqrt(n_features)
        if "sqrt",max_features=sqrt(n_features) (same as "auto")
        if "log2",max_features=sqrt(n_features)
        if None,max_features=n_features
        
    bootstrap: boolean,optional (default = true)是否在构建树时使用放回抽样
    
    min_samples_split:节点划分最少样本数
    min_samples_leaf:叶子节点的最小样本数

超参数:n_estimator,max_depth,min_samples_split,min_samples_leaf

具有极好的准确率
能够有效地运行在大数据上,处理具有高维特征的输入样本,而且不需要降维
能够评价各种特征在分类问题上的重要性

你可能感兴趣的:(机器学习,分类算法,决策树,深度学习,算法)