机器学习笔记9--分类算法

sklearn 转换器和估计器

转换器

估计器

 转换器

机器学习笔记9--分类算法_第1张图片

fit_transform = fit + transform

标准化:

        (x - mean)/ std

        fit_transform():

        fit():计算 每一列的平均值、标准差

        transform():(x - mean)/ std 最终转换运算

估计器

机器学习笔记9--分类算法_第2张图片

估计器工作流程:

        1、实例化一个estimator

        2、estimator.fit(x_train, y_train) 计算--调用完毕--模型生成

        3、模型评估:

                1)直接比对真实值和预测值

                        y_predict = estimator.predict(x_test)

                        y_test == y_predict

                2)计算准确率

                        accuracy = estimator.score(x_test, y_test)

机器学习笔记9--分类算法_第3张图片

 K-近邻算法

核心思想:根据“邻居”来判断自己的类别

KNN原理

        K = 1

                容易受到异常点的影响

        如何确定谁是“邻居”

        计算距离:

                距离公式:

                机器学习笔记9--分类算法_第4张图片

                曼哈顿距离(绝对值距离)、明可夫斯基距离 

案例:电影类型分析

        K = 1 爱情片

        K = 2 爱情片

        K = 6 无法确定

        可见K值过大容易受到样本不均衡的影响

        K值过小容易受异常点影响

        机器学习笔记9--分类算法_第5张图片

分析:K-邻近算法需要做什么准备

        无量纲化处理:标准化

        API:

        机器学习笔记9--分类算法_第6张图片

 案例:鸢尾花分类

        数据集介绍:

        机器学习笔记9--分类算法_第7张图片

        流程分析:

        1、获取数据

        2、数据集划分

        3、特征工程:标准化,这里不用降维

        4、KNN预估器流程

        5、模型评估

# 导入KNN算法的模块
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler


def knn_iris():
    '''
    用KNN算法对鸢尾花进行分类
    :return:
    '''
    # 1 获取数据
    iris = load_iris()

    # 2 划分数据集
    x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=6)

    # 3 特征工程:标准化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)

    # 对训练集中的平均值和标准差来对测试集做标准化
    x_test = transfer.transform(x_test)

    # k取3
    estimator = KNeighborsClassifier(n_neighbors=3)
    estimator.fit(x_train, y_train)

    # 5 模型评估
    # 方法1:直接比对真实值和预测值
    y_predict = estimator.predict(x_test)
    print("y_predict:\n", y_predict)
    print("直接比对真实值和预测值:\n", y_test == y_predict)

    # 方法2:计算准确率
    score = estimator.score(x_test, y_test)
    print("准确率为:\n", score)

    return None


if __name__ == "__main__":
    knn_iris()
    

        优点:简单、易于理解、易于实现、无需训练

        缺点:1、必须指定K值,K值选择不当则分类效果不好

                   2、懒惰算法、对测试样本分类时的计算量大、内存开销大(数据量过万就不适                            合使用了) 

模型选择与调优

交叉验证

超参数搜索 - 网格搜索

鸢尾花案例增加K值调优

交叉验证:

机器学习笔记9--分类算法_第8张图片

未完。。。

超参数搜索 -- 网格搜索

        机器学习笔记9--分类算法_第9张图片

 API:

机器学习笔记9--分类算法_第10张图片

 决策树:

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

信息论基础:

        1、信息:消除随机不定性的东西

        2、信息的衡量 - 信息量 - 信息熵

        机器学习笔记9--分类算法_第11张图片

决策树划分依据之一 -- 信息增益

        机器学习笔记9--分类算法_第12张图片

        机器学习笔记9--分类算法_第13张图片

        信息增益表示得知特征X的信息而信息的不确定性减小的程度使得类Y的信息熵的减小程度

API:

        机器学习笔记9--分类算法_第14张图片

        max_depth决定的树的深度过大可能会造成过拟合的情况,所以有时适当减少深度反而能增加预测的准确性

决策树可视化:

优点:可视化 -- 可解释能力强

缺点:过于复杂的树容易过拟合(特征多或数据量大)

改进:剪枝(api可以调用)

           随机森林算法

集成学习方法:随机森林算法

        

        

        原理:

                训练集:特征值,目标值

                两个随机:训练集随机,特征随机

                bootstrap:随机有放回抽样:降维

        机器学习笔记9--分类算法_第15张图片

        机器学习笔记9--分类算法_第16张图片

API:

        机器学习笔记9--分类算法_第17张图片

        优点:极好的准确率:大数据,高维数据,能够评估每个分类在特征上的对应

         

你可能感兴趣的:(机器学习,分类,sklearn)