机器学习--回归与聚类算法
总结:
机器学习——转换器与预估值——转换器-特征工程 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是否添加偏执,使模型更准确
正则化力度越大,权重系数会越小
正则化力度越小,权重系数会越大
更多推荐
所有评论(0)