目的:调整超参数
????????对于KNN来说,可以调整的参数包括
????????????????K:邻居的个数
????????????????P:距离度量方式
????????概述:训练数据 划分为 训练集、验证集
????????stratify:分层划分,stratify = y 保证训练集、测试集一致
????????(当数据中一个类别数量很多,一个很小,要设置这个参数)
????????概述:遍历所有参数组合,训练模型,找最佳参数组合
????????每一个参数组合,都会计算cv次,每次的评估指标计算平均值,通过指标平均值来判断哪组参数最好
????????from sklearn.model_selection import GridSearchCV
????????GridSearchCV:交叉验证
????????knn_estimator = KNeighborsClassifier(n_neighbors = 3)
????????n_neighbors:KNN中k的取值
????????param_grid_ = { ' n_neighbors ' :[ 2,3,4,5,6 ],' p ' :[1,2],' weights ' :[ ' uniform ',' distance ' ] }
????????p:1曼哈顿距离,2欧氏距离
????????weights:投票时的权重
????????????????uniform:平权投票(默认),所有的样本权重都一样
????????????????distance:加权投票,考虑距离的倒数作为权重
????????grid_estimator = GridSearchCV(estimator = knn_estimator,param_grid = param_grid_,cv = 4)
????????cv = 4:把训练集划分成4份,3份用来训练,1份用来验证
????????grid_estimator.fit(x_train_scaled,y_train)
????????y_train_pred=grid_estimator.predict(x_train_scaled)
????????y_test_pred=grid_estimator.predict(x_test_scaled)
????????交叉验证网格搜索的全部过程,每组验证集的评价结果:? ? ? ??
????????????????grid_estimator.cv_results_
????????最佳分数:grid_estimator.best_score_
????????最佳的参数组合:grid_estimator.best_params_
????????最佳的分类器:grid_estimator.best_estimator_
????????概述:利用 回归方程 对 特征值 和目标值的关系建模的分析方法
????????导包:from sklearn.linear_model import LinearRegression
????????创建线性回归对象:estimator = LinearRegression( )
????????求解的基本思路:构造 假设函数:y = kx + b
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?确定 损失函数
? ? ? ? 概述:也称为代价、成本、目标函数,衡量每个样本 预测值 与 真实值 效果的函数
????????种类:
? ? ? ? ? ? ? ? 1.?均方误差(MSE):Mean Square Error,越小,模型预测越准确
?????????????????????????????????????????????????n 为样本数量,y 为实际值,y ? 为预测值
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 导包:from sklearn.metrics import mean_squared_error
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 调用:mean_squared_error(y_test,y_predict)
? ? ? ? ? ? ? ? 2.?平均绝对误差(MAE):Mean Absolute Error 对误差大小不敏感
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?导包:from sklearn.metrics import mean_absolute_error
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 调用:mean_absolute_error(y_test,y_predict)
? ? ? ? ? ? ? ? 3.?均方根误差(RMSE):Root Mean Squared Error 对异常点更加敏感,RMSE 是
MSE 的平方根,某些情况下比MSE更有用
? ? ? ? ?tips:如果RMSE指标训练的非常低,说明模型对异常点(对噪声)也拟合的非常好,容易 过拟合
????????梯度:(矢量)梯度的方向就是上升最快的方向;单变量函数,梯度为 某一点切线斜率,有
?????????????????????方向为函数增长最快的方向;多变量函数,梯度为 某一点的 偏导数,有方向,偏导
?????????????????????数分量的向量方向
????????步长(学习率):在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?太小,下降速度会慢;太大,容易错过最低点、产生下降过程中的震荡、
?????????????????????????????????????甚至梯度爆炸
????????公式:w = w - a * 梯度
?????????????????????????????????????????????????a:步长????????w:权重
????????过程:?????1、给定初始位置 W、步长(学习率)
????????????????????????2、计算该点 当前的梯度的负方向
????????????????????????3、向负方向移动步长,更新W
????????????????????????4、重复2、3 直至收敛(两次差距小于指定的阈值,或者达到指定的迭代次数)
? ? ? ? API:from sklearn.linear_model import SGDRegressor ( loss = "squared_loss",
? ? ? ? ? ? ? ? ?fit_intercept = True,learning_rate = 'constant',eta0 = 0.01)
????????????????loss:损失函数类型
????????????????learning_rate:学习率策略
????????????????eta0:学习率的值
????????????????学习率不断变小策略: ‘ invscaling ’ :eta = eta0 / pow(t, power_t = 0.25)
????????分类:
????????全 梯度下降算法 FGD:更新权重时,使用全部样本,训练速度较慢
????????随机 梯度下降算法 SGD:每轮随机挑一个样本,简单、高效、不稳定,遇到噪声容易陷入局
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 部最优解
????????小批量 梯度下降算法 mini-bantch:每轮随机挑一小批样本,结合了 SG 和 FG,最常用
????????随机平均 梯度下降算法 SAG:每轮随机挑一个样本并记录,下一轮再挑一个,并计算两个梯
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?度的平均值,初期表现不佳
????????正规方程:只对 线性回归 有用,不是所有的矩阵都有逆矩阵
????????公式:
? ? ? ? ?API:from sklearn.linear_model import LinearRegression ( fit_intercept = True )
? ? ? ? ? ? ? ? ? fit_intercept:是否计算偏置
? ? ? ? ? ? ? ? ??estimator = LinearRegression( )
? ? ? ? ? ? ? ? ? 查看属性:
????????????????????????????????模型的权重系数,回归系数(斜率):estimator.coef_
????????????????????????????????偏置,截距:estimator.intercept_