首页 > 其他分享 >11.13机器学习_KNN和模型选择调优

11.13机器学习_KNN和模型选择调优

时间:2024-11-13 22:19:06浏览次数:3  
标签:KNN data 11.13 train estimator test 调优 True sklearn

7 特征降维

实际数据中,有时候特征很多,会增加计算量,降维就是去掉一些特征,或者转化多个特征为少量个特征

特征降维其目的:是减少数据集的维度,同时尽可能保留数据的重要信息。

特征降维的好处:

减少计算成本:在高维空间中处理数据可能非常耗时且计算密集。降维可以简化模型,降低训练时间和资源需求。

去除噪声:高维数据可能包含许多无关或冗余特征,这些特征可能引入噪声并导致过拟合。降维可以帮助去除这些不必要的特征。

特征降维的方式:

  • 特征选择
    • 从原始特征集中挑选出最相关的特征
  • 主成份分析(PCA)
    • 主成分分析就是把之前的特征通过一系列数学计算,形成新的特征,新的特征数量会小于之前特征数量

1 .特征选择

(a) VarianceThreshold 低方差过滤特征选择
  • Filter(过滤式): 主要探究特征本身特点, 特征与特征、特征与目标 值之间关联

    • 方差选择法: 低方差特征过滤

      如果一个特征的方差很小,说明这个特征的值在样本中几乎相同或变化不大,包含的信息量很少,模型很难通过该特征区分不同的对象,比如区分甜瓜子和咸瓜子还是蒜香瓜子,如果有一个特征是长度,这个特征相差不大可以去掉。

      1. 计算方差:对于每个特征,计算其在训练集中的方差(每个样本值与均值之差的平方,在求平均)。
      2. 设定阈值:选择一个方差阈值,任何低于这个阈值的特征都将被视为低方差特征。
      3. 过滤特征:移除所有方差低于设定阈值的特征
创建对象,准备把方差为等于小于2的去掉,threshold的缺省值为2.0
sklearn.feature_selection.VarianceThreshold(threshold=2.0)

把x中低方差特征去掉, x的类型可以是DataFrame、ndarray和list
VananceThreshold.fit_transform(x)
fit_transform函数的返回值为ndarray
from sklearn.feature_selection import VarianceThreshold
import pandas as pd
def variance_demo():
    # 1、获取数据,data是一个DataFrame,可以是读取的csv文件
    data=pd.DataFrame([[10,1],[11,3],[11,1],[11,5],[11,9],[11,3],[11,2],[11,6]])
    print("data:\n", data)   
    # 2、实例化一个转换器类
    transfer = VarianceThreshold(threshold=1)#0.1阈值
    # 3、调用fit_transform
    data_new = transfer.fit_transform(data)
    print("data_new:\n",data_new)
    return None
variance_demo()
(b) 根据相关系数的特征选择

<1>理论

正相关性(Positive Correlation)是指两个变量之间的一种统计关系,其中一个变量的增加通常伴随着另一个变量的增加,反之亦然。在正相关的关系中,两个变量的变化趋势是同向的。当我们说两个变量正相关时,意味着:

  • 如果第一个变量增加,第二个变量也有很大的概率会增加。
  • 同样,如果第一个变量减少,第二个变量也很可能会减少。

正相关性并不意味着一个变量的变化直接引起了另一个变量的变化,它仅仅指出了两个变量之间存在的一种统计上的关联性。这种关联性可以是因果关系,也可以是由第三个未观察到的变量引起的,或者是纯属巧合。

在数学上,正相关性通常用正值的相关系数来表示,这个值介于0和1之间。当相关系数等于1时,表示两个变量之间存在完美的正相关关系,即一个变量的值可以完全由另一个变量的值预测。

举个例子,假设我们观察到在一定范围内,一个人的身高与其体重呈正相关,这意味着在一般情况下,身高较高的人体重也会较重。但这并不意味着身高直接导致体重增加,而是可能由于营养、遗传、生活方式等因素共同作用的结果。

负相关性(Negative Correlation)与正相关性刚好相反,但是也说明相关,比如运动频率和BMI体重指数程负相关

不相关指两者的相关性很小,一个变量变化不会引起另外的变量变化,只是没有线性关系. 比如饭量和智商

皮尔逊相关系数(Pearson correlation coefficient)是一种度量两个变量之间线性相关性的统计量。它提供了两个变量间关系的方向(正相关或负相关)和强度的信息。皮尔逊相关系数的取值范围是 [−1,1],其中:

  • ρ = 1 \rho=1 ρ=1 表示完全正相关,即随着一个变量的增加,另一个变量也线性增加。
  • ρ = − 1 \rho=-1 ρ=−1 表示完全负相关,即随着一个变量的增加,另一个变量线性减少。
  • ρ = 0 \rho=0 ρ=0 表示两个变量之间不存在线性关系。

相关系数 ρ \rho ρ的绝对值为0-1之间,绝对值越大,表示越相关,当两特征完全相关时,两特征的值表示的向量是

在同一条直线上,当两特征的相关系数绝对值很小时,两特征值表示的向量接近在同一条直线上。当相关系值为负数时,表示负相关

<2>皮尔逊相关系数:pearsonr相关系数计算公式, 该公式出自于概率论

对于两组数据

标签:KNN,data,11.13,train,estimator,test,调优,True,sklearn
From: https://blog.csdn.net/gs1we1/article/details/143753945

相关文章

  • 2024.11.13 DP题单
    录制唱片你刚刚继承了流行的“破锣摇滚”乐队录制的尚未发表的\(N\)(\(1\leqN\leq20\))首歌的版权。你打算从中精选一些歌曲,发行\(M\)(\(1\leqM\leq20\))张CD。每一张CD最多可以容纳\(T\)(\(1\leqT\leq20\))分钟的音乐,一首歌不能分装在两张CD中。CD数量可以用完,也可以......
  • 每日打卡 11.13
    includeusingnamespacestd;definemax10voidswap(int*px,int*py);voidbubble(inta[],intn);intmain(){intn,a[max];inti;cout<<"输入n"<<endl;cin>>n;cout<<"输入n个数"<<endl;for(i=0;......
  • 11.13闲话-委托与事件
    11.13闲话-委托与事件推荐前言其实委托与事件并不是必须品,如果你的码力超群,可以不使用oop、函数便可以切掉猪国杀,那完全不用学习委托与事件。其作用就像函数、封装类似,为节省大量的无意义代码而诞生。前言先考虑为什么使用函数,第一点就是因为我们会多次使用相同的代码,第二点......
  • 闲话 11.13
    On17:20:锣鼓似了,遂来乱写。上午早上来了先改昨天T4,会了打的就是快,吃完饭没多久A了。然后学考,左边两个化奥的,左前方CTH,正前方HDK,右边9G。进场发现这个挡板一点意义没有,根本挡不住。然后开做后发现,由于手必须要操作鼠标所以身体不得不前倾,这下看懂挡板的作用了。开题,直......
  • Flink调优之前,必须先看懂的TaskManager内存模型
    Flink调优之前,必须先看懂的TaskManager内存模型TaskManager内存模型Flink的程序运行在内存中。不管是我们在学习C语言、Java语言的时候,我们都很想知道程序到底是如何管理内存的。Flink程序也一样,当我们写完Flink程序,我们需要为Flink程序分配运行的资源,那针对什么样的数据量,需要......
  • 2024.11.13 1902版
    起于《海奥华预言》的思考◆地球管理结构和参考持续更新中...... 英文地址:https://github.com/zhuyongzhe/Earth/tags中文地址:https://www.cnblogs.com/zhuyongzhe85作者:朱永哲 ---------------------------------------------------------------------------------......
  • 2024.11.13 1825版
    起于《海奥华预言》的思考◆地球管理结构和参考持续更新中...... 英文地址:https://github.com/zhuyongzhe/Earth/tags中文地址:https://www.cnblogs.com/zhuyongzhe85作者:朱永哲 ---------------------------------------------------------------------------------......
  • 利用KNN对Iris鸢尾花数据集进行分类
    环境配置Python3.xScikit-learn库、Numpy库、Matplotlib库JupyterNotebook或类似IDE(用于代码编写和结果展示)数据集使用Scikit-learn自带的Iris数据集。该数据集包含150条记录,每条记录有4个特征(萼片长度、萼片宽度、花瓣长度、花瓣宽度),属于3个类别之一(Setosa、Versicolor......
  • CW 11.13 模拟赛 T3 大方和小方
    算法可以看出来是组合数学,但是考场上时间不够+本身也没做过组合数学,放弃了经过人类智慧的推导由\(\rm{Subtask}1\)可得基础柿子令$a=b_2-d_1,b=a_2-c_1$插空法可知答案为\(a+b\choosea\)代码略总结注意组合数学的\(\sum\)有些时候可以化......
  • CW 模拟赛 11.13 个人记录
    T1算法暴力暴力思路是显然的,观察到并查集可以\(\mathcal{O}(n\logn)\)的维护题目中求的信息对于\(50\%\)的数据显然可以通过耗时\(10\rm{min}\),正常正解暴力疑似就是正解?????代码这个题只要挂了我就趋势,但是看这样子来说应该是\(T1\)放了简单题不挂......