Python-9

标准化后梯度下降算法

数据归一化问题
解决方案
最值归一化(normalization):把所有数据映射到0-1之间 Xscale=X-Xmin/(Xmax-Xmin)

适用场景:适用于分布有明显边界的情况
标准化(standardization):也叫“均值方差归一化”,把所有数据归一到均值为0标准差为1的分布中

Xscale=X-Xmin/s

适用场景:适用于分布没有明显的边界,有可能存在极端数据的情况;其实也适用于数据有明显边界的情况,所以更常用

梯度下降法在线性回归中的使用
使用梯度下降法前,最好进行数据归一化,数据标准化在梯度下降法中的使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-63ArLL2B-1651195767318)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\1594294286422.png)]

随机梯度下降法(Stochastic Gradient Descent)
学习率随着循环次数的增加而逐渐递减----->模拟退火的思想

n=1/i_items---->n=1/(i_items+b)---->n=a/(i_items+b)

随机梯度下降法通过在每次迭代的过程中,仅根据一个样本对模型中的参数进行调整,从而得到最优参数

import numpy as np

from sklearn import datasets

boston = datasets.load_boston() # 加载波士顿房产数据
X = boston.data # 获取样本特征
y = boston.target # 每个房子的价格标签
X = X[y<50.0] # 过滤掉极端特征数据
y = y[y<50.0] # 过滤掉极端标签数据

from sklearn.model_selection import train_test_split

#将原始数据拆分成训练数据集与测试数据集

X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=666)

from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import SGDRegressor

standardScaler = StandardScaler()
standardScaler.fit(X_train)
X_train_standard = standardScaler.transform(X_train)
X_test_standard = standardScaler.transform(X_test)

KNN算法样本距离公式

样本距离公式
欧拉距离1594296853380

​ 样本距离公式1594296870206
​ 明可夫斯基距离(公式中的p也是一个超参数)
1594296884025

调用scikit-learn实现KNN
from sklearn.neighbors import KNeighborsClassifier
kNN_classifier = KNeighborsClassifier(n_neighbors=6) # 实例化分类器对象
kNN_classifier.fit(X_train,y_train) # 传入训练数据集,进行拟合
y_predict = kNN_classifier.predict(x.reshape((1,-1))) # 对新样本进行预测
y_predict[0] # 显示预测的结果

KNN算法的测试
scikit-learn中拆分训练数据集与测试数据集

scikit-learn实现拆分

from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=666)

scikit-learn中计算分类准确度(手写识别数字准确度)
from sklearn.model_selection import train_test_split
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
digits = datasets.load_digits()
X = digits.data
y = digits.target
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=666)

kNN_classifier = KNeighborsClassifier(n_neighbors=6)
kNN_classifier.fit(X_train,y_train) # 拟合

kNN_classifier.score(X_test,y_test) # 获取准确率

超参数与模型参数
超参数: 在算法运行前需要决定的参数,通常说的"调参"就是指调整超参数的值(例如:KNN算法中的n_neighbors、距离权重参数weights、明科夫斯基距离的p参数)
模型参数: 算法过程中学习的参数(KNN算法没有模型参数)

KNN中进行数据标准化处理
原因:样本特征的量纲不一致,可能导致特征间数据相差太大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值