总结:

机器学习——转换器与预估值——转换器-特征工程    1.实例化一个转换器类 2. 调用fittransform

                                                       预估器-机器学习算法

                                KNN算法——根据你的邻居来确定类别

                                                        谁是邻居-距离公式

                                                        k的取值——k过小,容易受到异常值的影响

                                                                            k过大,容易受到样本不均衡的影响

                                                        应用场景:少量数据

                                朴素贝叶斯算法——朴素:假定了特征与特征之间相互独立 

                                                                贝叶斯:贝叶斯公式

                                                                 拉普拉斯平滑系数

                                                                应用场景:文本分类

                                决策树——找到最高效的决策顺序-信息增益

                                                   信息增益=信息熵-条件熵

                                                    可视化,可解释能力强,但容易过拟合采取随机森林

                                                    

                                随机森林——随机——训练集随机

                                                                     特征随机

                                                      森林——多个决策树

                                                      应用场景:高维度特征,大数据

一、线性回归

1. 定义

利用回归方程(函数)对一个或者多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。

2.特点

只有一个自变量的情况称为单变量回归,多于一个自变量情况叫做多元回归。

线性关系一定是线性模型

线性模型不一定是线性关系

线性模型有两种:自变量一次,参数一次

自变量一次

y = w1x1 + w2x2 +w3x3 +...... +wnxn +b

参数一次

y = w1x1 +w2x1^2 +w3x1^3 +w4x2^3 +...... + b

而线性关系就是自变量与参数都是一次的。

3.线性回归的损失和优化原理

目标:求模型参数

           模型参数能够使得预测准确

损失函数/cost/成本函数/目标函数/最小二乘法:含义相同,只是名字不同

(1)优化损失-优化方法

正规方程   

直接求解W

梯度下降

试错、改错

4.线性回归API

5.波士顿房价预测

流程:

1)获取数据集

2)划分数据集

3)特征工程:

        无量钢化 - 标准化 

4)预估器流程

        fit() --> 模型

        coef_  intercept_

5)模型评估

from sklearn.datasets import load_boston#获取数据集
from sklearn.model_selection import train_test_split#划分数据集
from sklearn.preprocessing import StandardScaler#标准化
from sklearn.linear_model import LinearRegression,SGDRegressor

def linear1():
    """
    正规方程的优化方法对波士顿房价进行预测
    :return:
    """
    # 1)获取数据
    boston = load_boston()
    # 2)划分数据集
    x_train,x_test,y_train,y_test=train_test_split(boston.data,boston.target,random_state=22)
    # 3)标准化
    trainfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)
    # 4)预估器
    estimator = LinearRegression()
    estimator.fit(x_train,y_train)
    # 5)得出模型
    print("正规方程-权重系数为:\n",estimator.coef_)
    print("正规方程-偏置为:\n",estimator.intercept_)
    # 6)模型评估
    return None

if __name__ =="__main__":
    print()


def linear2():
    """
    梯度下降的优化方法对波士顿房价进行预测
    :return:
    """
    # 1)获取数据
    boston = load_boston()
    print("特征数量:\n",boston.data.shape)
    # 2)划分数据集
    x_train,x_test,y_train,y_test=train_test_split(boston.data,boston.target,random_state=22)
    # 3)标准化
    trainfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)
    # 4)预估器
    estimator = SGDRegressor()
    estimator.fit(x_train,y_train)
    # 5)得出模型
    print("梯队下降-权重系数为:\n",estimator.coef_)
    print("梯队下降-偏置为:\n",estimator.intercept_)
    # 6)模型评估
    return None

if __name__ =="__main__":
    print()
    #代码1:正规方程的优化方法对波士顿房价进行预测
    linear1()
    #代码2:梯度下降的优化方法对波士顿房价进行预测
    linear2()

5.回归性能评估

均方误差评价机制:

from sklearn.metrics import mean_squared_error
# 6)模型评估
y_predict = estimator.predict(x_test)
print("预测房价:\n",y_predict)
error = mean_squared_error(y_test,y_predict)
print("梯度下降-均方误差为:\n",error)

6.梯度下降优化器

关于优化的方法:GD,SGD,SAG

1.GD

梯度下降,原始的梯度下降法需要计算所有样本的值才能够得出梯度,计算量大,所以后面才有一系列改进

2.SGD

随机梯度将下降是一个优化方法。它在一次迭代时只考虑一个训练样本。

优点:高效,容易实现

缺点:SDG需要许多参数:比如正则项参数、迭代数

            SDG对于特征标准化是敏感的

3.SAG

随机平均梯度法,由于收敛的速度太慢,有人提出SAG等基于梯度下降的算法  

7.欠拟合与过拟合

 过拟合 - 训练集表现好,测试集上不好

过拟合:一个假设在训练数据上能够获得比其他假设更好的拟合,但是在测试数据集上却不能很好地拟合数据,此时认为这个假设出现了过拟合的现象。(模型过于复杂)

欠拟合:一个假设在训练数据上不能获得更好的拟合,并且在测试数据集上也不能很好地拟合数据,此时认为这个假设出现了欠拟合的现象。(模型过于简单)

(1)欠拟合和过拟合的解决方法

欠拟合:学习到数据的特征过少

解决:增加数据的特征数量

过拟合:原始特征过多,存在一些嘈杂特征,模型过于复杂是因为模型尝试去兼顾各个测试数据点。

解决:正则化

L1

损失函数 + λ惩罚项

LASSO

L2(更常用)

损失函数 + λ惩罚项

Ridge - 岭回归

8.线性回归的改进 - 岭回归

(1)带有L2正则化的线性回归-岭回归

alpha 正则化力度=惩罚项系数

fit_intercept是否添加偏执,使模型更准确

正则化力度越大,权重系数会越小

正则化力度越小,权重系数会越大

更多推荐