机器学习学习概述,scikitlearn实现机器学习算法

机器学习基础
    数据集分类
        训练集:用来训练模型的数据
        验证集:用来调整模型的超参数
        测试集:用来评估模型的泛化能力(在新的样本集上,模型的表现能力)

    误差分析:
        误差是指样本预测标签值 和 样本真实标签值 之间的差距
        我们要做的就是使误差尽可能的小,这样预测值就很接近真实标签值了

        误差分类:
            训练误差
            泛化误差
            测试误差
    过拟合和欠拟合
        过拟合:是指模型在训练集上的表现要好于在测试集(表现好是过了的意思,把噪声等错误信息也拟合了)(模型过于复杂,可加入正则项、数据降维减少噪声缓解这种现象)
        欠拟合:是指模型不能很好的拟合数据样本(模型过于简单,可使用复杂模型,或增加样本数据缓解这种现象)
    
    泛化误差=偏差+方差+系统误差

        偏差:反映模型拟合数据样本的能力
        方差:在极少部分数据扰动的情况下,模型的稳定情况()
        系统误差:人为标记,或者计算精度产生不可避免的噪声。

    交叉验证:
        
        将数据样本分为K份,其中k-1份作为训练集,剩下的一份作为验证集。
        重复K次验证,确保每一份数据都能作为验证集。最终结果取K次的平均
        优点:避免了取样的 随机性
        缺点:耗时间

    线性回归
        模型:y_hat=w*x+b (w,x为矩阵,b为向量)
        目标函数 min f=np.mean((y_true-y_hat)**2)

        优化方法:梯度下降法(常用,推荐)、最小二乘法
            求得最优参数 w* ,b*
        使用SciKitlearn实现线性回归

        from sklearn.linear_model  import LinearRegression
            ling_reg=LinearRegression()
            #参数 X_train 为 训练集样本特征 y_train 为训练集样本标签
            ling_reg.fit(X_train,y_train)
            #参数X_test 为测试集样本属性 ,方法 返回 线性回归预测的结果
            y_predict=lin_reg.predict(X_test)
    
    逻辑回归:
        使用sigmoid函数的特性来实现二分类
        sigmoid函数特性: 值域在 [0,1]之间 ,天然和概率 相匹配

        当 sigmoid(x)>= 0.5时可以将该类 分为正样本 否则为 负样本

        模型: y_hat=sigmoid(w*x+b)

        目标函数: min f=-y_true*log(y_hat)-(1-y_true)*log(1-y_true) (交叉熵)

        优化方法:梯度下降法
            求得:最优参数 w*,b*

        使用SciKitlearn实现逻辑回归
            from sklearn.linear_model import LogisticRegression
                log_reg=LogisticRegression()
                #参数 X_train 为 训练集样本特征 y_train 为训练集样本标签
                log_reg.fit(X_train,y_train)
                #参数X_test 为测试集样本属性 ,方法 返回 线性回归预测的结果
                y_predict=log_reg.predict(X_test)

    支持向量机:(二分类)
        对于线性可分的数据(可以找到一条直线将正负样本分开)
        这种种直线有很多条,(思想)而支持向量机找到的直线尽可能的离正负样本点尽可能的远,这个距离称为margin

        目标函数:max margin 可参考机器学习周志华老师支持向量机章节的推导过程

        max margin 可推导成 min (1/2)*np.sum(w**2) 目标函数

        使用梯度下降法解得最优参数 w*

        使用SciKitlearn实现支持向量机

        from sklearn.svm import LinearSVC
            # C 为超参数,sklearn中实现的SVM加入了正则项,C为正则项前的系数,
            # C越大,容错能力越弱(容易过拟合)
            # C 越小 ,容错能力变大(容易欠拟合)
            # C的值根据具体应用来定
            svc=LinearSVC(C=1e9)
            #参数 X_train 为 训练集样本特征 y_train 为训练集样本标签
            svc.fit(X_train,y_train)
            #参数X_test 为测试集样本属性 ,方法 返回 线性回归预测的结
            y_predict=svc.predict(X_test)
    
    决策树
        选择信息熵最小的特征、和阈值进行分类,

    集成学习:
        使用多个弱分类器分别对样本进行分类,会根据弱分类器的投票结果得到最终的结果

    聚类:
        K-means 聚类:
            算法思想
            1.随机初始化K个中心点,
            2.分别计算样本点到中心点的距离(将样本点划分到 距离最近的中心点 的类)
            3.更新中心点  新的中心点= 所属类的样本点的均值

            重复更新2,3步骤,直到中心点不再变化

        meanShift 聚类

        from sklearn.cluster=

    PCA数据降维:
        作用:去除噪声,减少次要特征的数量,也就减少了参数的数量,将高维数据降成二维数据方便进行可视化
        from sklearn.decomposition import PCA
        #0.95表示保留95%原有数据的特征
        #n_components 表示 降维后的维数
        pca=PCA(n_components=2)
        X_pca=pca.fit_transform(X)

        参考链接:Datawhale深度学习Descriptionicon-default.png?t=LA92https://datawhalechina.github.io/unusual-deep-learning/        书籍:

                周志华机器学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值