python机器学习(三)特征预处理、鸢尾花案例--分类、线性回归、代价函数、梯度下降法、使用numpy、sklearn实现一元线性回归

文章介绍了K-近邻算法的数据预处理,包括标准化和归一化,强调了数据预处理的重要性。接着讨论了交叉验证和网格搜索在参数选择中的应用。此外,文章还详细讲解了线性回归,包括代价函数、梯度下降法以及一元线性回归的实现和优化。
摘要由CSDN通过智能技术生成

K-近邻算法(K-Nearest Neighboor)

特征预处理

数据预处理的过程。数据存在不同的量纲、数据中存在离群值,需要稳定的转换数据,处理好的数据才能更好的去训练模型,减少误差的出现。

标准化

数据集的标准化对scikit-learn中实现的大多数机器学习算法来说是常见的要求,很多案例都需要标准化。如果个别特征或多或少看起来不是很像标准正态分布(具有零均值和单位方差,均值为0,单位方差为1),那么它们的表现力可能会较差。将数据处理成标准化,或者接近于正态分布的数据。
在实际情况中,我们经常忽略特征的分布形状,通过以下公式去实现: X ′ = x − m e a n σ X'= \frac{x-mean}{\sigma} X=σxmean
去均值进行中心化,样本减去均值除以向量的标准差,进行缩放。缺点:特征比较多的时候,某一个特征的方差特别大,特别大的方差在学习算法的时候占有较大的地位,导致机器学习与我们的期望产生误差。

sklearn.preprocessing.MinMaxScaler(feature_range=(0,1)...)
MinMaxScaler.fit_transform(X)
X:numpy array格式的数据[n_samples,n_features]

数据预处理都在preprocessing下进行的,MinMaxScaler为标准化(归一化)的类。
在这里插入图片描述

  • 例题:
    在这里插入图片描述
    在这里插入图片描述
sklearn.perprocessing.StandardScaler()
StandardScaler.fit_transform(X)
X:numpy array格式的数据[n_samples,n_features]

StandardScaler也是用来标准化的,默认的参数,with_mean = True,with_std=True,默认去中心化,去标准差。
在这里插入图片描述

鸢尾花案例–分类

实现步骤:

  • 获取数据
  • 数据基本处理
  • 特征工程
  • 机器学习(模型训练)
  • 模型评估
    在这里插入图片描述
    在这里插入图片描述
    得到的准确率为:0.767,寻找更好的n_neighbors来得出准确率高一点的模型,n_neighbors的取值可以是{1,3,5,7…},如果在模型训练的时候循环取值,就会创建很多个分类器,可以使用交叉验证自动的传入。
交叉验证

交叉验证,也叫循环估计,将数据集切割成10份,在建模的时候,拿出大部分的去训练模型,小部分的保留进行测试,不停的进行切割,直到每一个子样的集都作为测试集之后,把得出来的每一个的结果求平均,得到返回的结果。
得到的是平均的结果,比单次的结果更加可靠,比如考试十次得到的平均结果,比偶然考试得到的结果更加稳定。
目的:为了得到可靠稳定的模型

网格搜索

网格搜索,简单的说就是手动的给出一个模型中你想要改动的所用的参数,程序自动的帮你使用穷举法来将所有的参数都运行一遍。

交叉验证、网格搜索api
sklearn.model_selection.GridSearchCV(estimator,param_grid=None,cv=None)对估计器的指定参数值进行详尽搜索
estimator:估计器对象
param_grid:估计器参数(dict){
   "n_neighbors":[1,3,5]}
cv: 指定几折交叉验证
fit: 输入训练数据
score: 准确率

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
选参数的方式:

  • 交叉验证网格搜索,只适合数据量较小的,这种方法的计算量大
  • 随机搜索
  • 贝叶斯调参
K近邻算法-回归

KNN算法不仅能做分类的问题,还能解决回归的问题。最常用的是均方误差。预测值减去真实值平方求和,除以个数。 M S E = ∑ i = 1 m ( f ( x i ) − y i ) 2 m MSE= \frac{\displaystyle{\sum_{i=1}^{m}(f(x_i)-y_i)^2}}{m} MSE=mi=1m(f(xi)yi)2

分析房子出租的情况,如果有个1室的房子,可以租多少钱。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
得到的值比模型评估的均方误差值还要大,多了个特征并不是能更精确。
有房子的特征数据和房价,训练完房子的特征,传到模型里去,得出预测的房价。预测的房价与真实值之间存在误差,目标是找到最好的拟合线。

线性回归

高尔顿发现父母的身高比较高,子女也会高;父母矮,子女也会矮,如果父母双方都异常高或者异常矮,那么子女的身高会趋向于人的平均身高。皮尔逊收集了近千名成员的身高记录发现,父亲高的群体,儿辈的平均身高低于父辈的身高;父亲矮的群体,儿辈是平均身高高于父辈的身高,这样高的和矮的的儿辈一同“回归”到所有男子的平均身高,回归到中等。回归算法中最基础的就是线性回归。

线性回归定义

利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。
根据给定的楼盘价格,预测房价
在这里插入图片描述
上图中的点大致会回归为一条直线 y = k x + b y=kx+b y=kx+b,k为斜率,b为截距,如想买100平的房子,就可以大致预测出价格大致为430000左右,房子的尺寸是特征,价格是目标(标签),线性回归算法是有监督学习的算法。
在这里插入图片描述
每一行都是一个样本数据,共有m个样本数据,size为特征,price为标签。
在这里插入图片描述
线性回归的流程如上图,用训练集训练算法,然后用算法去建模得到模型,有新的数据传进来去预测目标数据。
在这里插入图片描述
θ 0 θ_0 θ0为截距, θ 1 θ_1 θ1为斜率,图中的直线为简单的一元线性回归模型,只有1个变量预测出来的,也称为单变量线性回归模型。
在这里插入图片描述

代价函数(cost function)

目标:找到一条最好的拟合线,使得误差最小,也就是代价函数最小。
针对给出的点有真实的y值,在预测线上有个相对于线的y值,真实值 y i y^i yi与预测值 h ( x i ) h(x^i) h(xi)之间存在误差,结果 h ( x i ) − y i h(x^i)-y^i h(xi)yi有正有负,取绝对值进行求和为总误差,除以样本点的个数为均方误差。加上二分之一是为了后续计算方便,公式如下。
在这里插入图片描述
参数 θ 0 , θ 1 θ_0,θ_1

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值