标准差
方差的平方根方差 1/n和(xi - x平均值)的平方距离度量
欧式距离 :通过距离平方值进行计算曼哈顿距离(Manhattan Distance): 通过距离的绝对值进行计算切比雪夫距离(Chebyshev Distance) :维度的最大值进行计算闵可夫斯基距离(Mi nkowski Distance) : 当p=1时,就是曼哈顿距离;当p=2时,就是欧氏距离;当p=∞时,就是切比雪夫距离。 小结:前面四个距离公式都是把单位相同看待了,所以计算过程不是很科学标准化欧氏距离(Standardized EuclideanDistance) : 在计算过程中添加了标准差,对量刚数据进行处理 余弦距离(Cosine Distance) 通过cos思想完成 汉明距离(Hamming Distance)[了解] : -个字符串到另-个字符串需要变换几个字母,进行统计 杰卡德距离(Jaccard Distance)[了解] : 通过交并集进行统计 马氏距离(Mahalanobis Distance) [了解] 通过样本分布进行计算k值的选择
近似误差–过拟合 --在训练集正表现好,测试集表现不好估计误差 对测试集的测试误差 误差小说明对未知数据预测能力好k值小 意味模型变得复杂 容易发生过拟合 易受到异常点的影响k值大 模型变得简单 受到样本均衡问题kd树
构建树最近领域搜索样本集:{(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)}一、构建树 第一次: x轴-- 2,5,9,4,8,7 --> 2,4,5,7,8,9y轴-- 3,4,6,7,1,2 --> 1,2,3,4,6,7首先选择x轴,找中间点,发现是(7,2) 第二次: 左面: (2,3), (4,7), (5,4) --> 3,4,7右面: (8,1), (9,6) --> 1,6从y轴开始选择,左边选择点是(5, 4),右边选择点(9, 6) 第三次: 从x轴开始选择 二、搜索 在本域内,没有进行跨域搜索要跨到其他域搜索获取数据集 sklearn. datasets .
小数据: sklearn.datasets.load_* 注意: 该数据从本地获取大数据集: sklearn. datasets. fetch_ * 该数据从网上下载sklearn. datasets. fetch_ (subset=‘train’)–表示获取到的数据集类型 train test all数据集返回值介绍
类型是bunch 一个字典类型data 特征数据数组target 目标数组feature_names 特征名称target_names 目标名称DESCR 数据描述数据可视化
import seabornsns.lmplot(x=col1,y=col2,data=iris,hue=‘target’,fit_reg=True)x、y具体x轴、y轴数据的索引值hue 目标值fit_reg 是否进行线性拟合数据划分
from sklearn.model_selection import train_test_splittrain_test_split(x=特征值,y=目标值,test_size=测试集大小,random_state=随机数种子)返回值:x_train,x_test,y_train,y_test特征工程
通过一些转换函数将特征数据转换成更加适合算法模型的特征数据过程归一化 x’=(x-min)/(max-min) x’’=x’(mx-mi)+mi mx=1 mi=0对原始数据进行变化 把数据映射到(默认[0,1])之间from sklearn.preprocessing import MinMaxScalerMinMaxScaler(feature_range=(0,1)) 创建实例化个体 指定范围鲁棒性差,易受到异常点影响 只适合传统精确小数据 标准化 对原始数据变换成均值为0,标准差为1范围内x’ = (x-x_mean)/x_std 数据-平均值 /标准差from sklearn.preprocessing import StandardScaler异常值影响小交叉验证
将拿到的训练数据,分为训练和验证集几折交叉验证训练集:训练集+验证集 测试集:测试集不能提高模型的准确性为了让被评估的模型更加准确可信网格搜索
超参数 sklearn中需要手动指定的参数 网格搜索就是把这些超参数的值,通过字典的形式传递进去,选择最优 sklearn.model_selection.GridSearchCV(estimator,param_grid=,cv=) estimator:估计器对象 param_grid:估计器参数(dict){'n_neighbors':[1,3,4]} cv:指定几折 fit : 输入训练数据 score:准确率 结果分析: bestscore_:交叉验证中最好的结果 bestestimator_:最好的参数模型 cv_results_:每次交叉验证后的验证集准确率和训练集准确率 from sklearn.neighbors import KNeighborsClassifierestimator = KNeighborsClassifier(n_neighbors=2,algorithm=‘auto’)algorithm = ‘auto’ 自己选择 ‘kd_tree’ 树形数据结构 ‘ball_tree’ 特征值维数超过20 ‘brute’ 暴力 获取数据集数据基本处理特征工程机器学习模型评估 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split,GridSearchCV from sklearn.preprocessing import StandardScaler from sklearn.neighbors import KNeighborsClassifier iris = load_iris() x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size=0.2,random_state=1) transfer = StandardScaler() x_train = transfer.fit_transform(x_train) x_test = transfer.fit_transform(x_test) estimator = KNeighborsClassifier(n_neighbors=5,algorithm='auto') param_grid = {'n_neighbors':[1,3,5,7,9]} estimator = GridSearchCV(estimator,param_grid=param_grid,cv=5,n_jobs=10) estimator.fit(x_train,y_train) y_pre = estimator.predict(x_test) estimator.score(x_test,y_test)