数据降维

    技术2022-07-10  104

    数据降维: 指的是降低特征的数量 数据降维的2种方式: 1.特征选择 2.主成分分析

    1.特征选择 特征选择的原因: 冗余:部分特征相关度高,容易消耗计算性能。 噪声:部分特征对预测结果有影响 sklearnt二证选择API

    特征选择主要方法(三大武器): Filter(过滤式):varlanceThreshold # Varlance:方差 Embedded(嵌入式):正则化,决策树 Wrapper(包裹式)

    Filter:

    考虑所有样本这个特征的数据情况,过滤方差比较小的特征。他的意义其实就是特征选择。特征选择的API:sklearn.feature_selection.VarianceThreshold

    sklearn的主成分分析: PCA:分析简化数据集的技术 pca的目的:是数据位数压缩,尽可能降低原数据的维数,损失少量信息 pca的作用:可以削减回归分析或者据类分析的特征的数量 应用场景:当特征数量达到上百的时候。 API:sklearn.decomposition

    n_components:小数形式,范围是0-1,置顶损失量保留多少保留百分之90和保留百分之50是不一样的,一般使用90%-95%。 整数:减少到的特征数量。一般不使用整数,因为我们也不知道减小到多少

    #特征选择与主成分分析的比较: 当特征数上百,就是用主成分分析 特征选择是人为控制特征的大小分布,PCA是通过运算,得到较好的结果

    算法的分类

    算法是核心,数据和计算是基础 大部分复杂模型的算法设计都是算法工程师在做。而我们:分析很多数据,分析具体业务,应用常见算法,特征工程,调参数和优化。 我们应该学会分析问题,使用机器学习算法的目的,想要算法完成何种任务,掌握算法的基本思想,歇会对问题用相应的算法解决。学会利用库或者框架解决问题

    机器学习算法的判别依据

    分类是监督学习的一个核心问题,在监督学习中,当输出变量取有限个离散值时,预测问题变成分类问题,最基础的便是二分类问题,即判断是非,从两个类别中选一个作为预测结果

    关于数据来源: 1.公司本来就有数据 2.合作过来数据 3.购买的数据(很少) 拿到原始数据,明确问题要做什么(建立模型,根据目标值的数据类型划分应用种类) 数据的基本处理:pandas去处理数据(缺失值,合并表。。。) 特征工程(特征进行处理 ) 找到合适的算法去进行预测、 模型的评估,判定效果

    数据的划分和介绍

    sklearn数据集 1.数据集划分 2.sklearn数据集借口介绍 3.sklearn分类数据集 4.sklearn回归数据集 把数据集分为2部分,训练集和测试集,一般训练集占70%-80%,测试集20%-30% 训练集用来建立模型,测试集用来评估模型 数据集划分API:sklearn.model_selection.train_test_split

    回归数据集

    转换器和估计器

    转换器

    fit_transform():输入数据直接转换 fit():输入数据,但是不做事情 transform():进行数据的转换

    如果数据进行更改,用fit进行新数据,transform以前的数据:

    估计器(是一类实现了算法的API)

    朴素贝叶斯

    朴素贝叶斯的要求就是特征独立,经常使用在文档方面、 贝叶斯公式: 显然不合理,所以我们的解决方法:拉普拉斯平滑系数 sklearn中朴素贝叶斯的API: sklearn.naive_bayes.MultionmialNB 朴素贝叶斯中没有超参数 sklearn中决策树的api 泰坦尼克号的实例: 数据:http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt

    import pandas as pd from sklearn.feature_extraction import DictVectorizer from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier def decision(): “”" 决策树泰坦尼克号 :return: None “”" #获取数据 titan = pd.read_csv(“http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt”)

    #处理数据,找出特征值和目标值 x = titan[["pclass","age","sex"]] y = titan["survived"] #缺失值处理 x["age"].fillna(x["age"].mean(),inplace = True) # 分割数据集和测试集 x_train,x_test,y_train,y_test = train_test_split(x,y,test = 0.25) # 进行处理(特征工程),当特征是类别的时候,使用one-hot编码 dict = DictVectorizer(sparse= False) x_train = dict.fit_transform(x_train.to_dict(orient = "records")) x_test = dict.transform(x_test.to_dict(orient = "records")) dec = DecisionTreeClassifier() dec.fit(x_train,y_train) #预测准确率 print(dec.score(x_test,y_test))

    决策树的优缺点以及改进

    随机森林的API

    Processed: 0.040, SQL: 9