机器学习相关库和函数
来自:https://zhuanlan.zhihu.com/p/342941676
1、数据预处理(preprocessing)
相关库和函数 | 作用 |
---|---|
from sklearn.preprocessing import StandardScaler | 数据标准化 |
from sklearn.preprocessing import MinMaxScaler | 数据缩放到[0,1]间 |
from sklearn.preprocessing import Normalizer | 数据归一化:单位化向量 |
from sklearn.preprocessing import OneHotEncoder | 数据进行onehot编码 |
from sklearn.preprocessing import Binarizer | 对定量变量二值化:设定一个阈值,大于阈值的赋值为1,小于等于阈值的赋值为0 |
from sklearn.preprocessing import OrdinaryEncoder | 数值编码:将字符串文字编码为1、2、3、4… |
pd.fillna(填充值) | 缺失值填充 |
pd.quantile(某个分位数) | 获取分位数值 |
pd.mask(condition,other=None) | 当condition为true时,用other来进行替换 |
pd.where(condition,other=None) | 当condition为false时,用other来进行替换 |
2、特征选择(feature_selection)
2.1、过滤式特征选择
相关库 | 特征变量类型 | 目标变量类型 |
---|---|---|
from sklearn.feature_selection import VarianceThreshold | 连续型 | 均可 |
from sklearn.feature_selection import chi2(卡方检验) | 分类型 | 分类型 |
from sklearn.feature_selection import f_classif(F检验:方差分析) | 连续型 | 分类型 |
from sklearn.feature_selection import mutual_info_classif(互信息分类) | 连续型 | 分类型 |
from sklearn.feature_selection import f_regression(相关系数) | 连续型 | 连续型 |
from sklearn.feature_selection import mutual_info_regression(互信息回归) | 连续型 | 连续型 |
相关统计变量解释:
互信息:度量 X 和 Y 共享的信息,它度量知道这两个变量其中一个,对另一个不确定度减少的程度。值越大越相关 ,0表示特征和标签完全独立。
# SelectKBest与表格中的系数组合使用,最终选取出特定数量的特征
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
#选择K个最好的特征,返回选择特征后的数据,输出为选择后的特征矩阵
SelectKBest(chi2, k=2).fit_transform(iris.data, iris.target)
2.2、包裹式特征选择
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
#递归特征消除法,返回特征选择后的数据
#参数estimator为基模型
#参数n_features_to_select为选择的特征个数
RFE(estimator=LogisticRegression(), n_features_to_select=2).fit_transform(iris.data, iris.target)
2.3、嵌入式特征选择
2.3.1 基于惩罚项的特征选择
from sklearn.feature_selection import SelectFromModel
from sklearn.linear_model import LogisticRegression
#带L1惩罚项的逻辑回归作为基模型的特征选择
SelectFromModel(LogisticRegression(penalty="l1", C=0.1)).fit_transform(iris.data, iris.target)
2.3.2 基于树模型的特征选择
from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import GradientBoostingClassifier
#GBDT作为基模型的特征选择
SelectFromModel(GradientBoostingClassifier()).fit_transform(iris.data, iris.target)
SelectFromModel使用说明:https://blog.csdn.net/weixin_46072771/article/details/106190351
模型方法 | 作用 |
---|---|
SelectFromModel.fit(X,y) | 根据训练集训练模型,返回是模型,可以继续调用selector.estimator_.coef_或者selector.estimator_.feature_importances_获取特征重要性并确定特征选择阈值 |
SelectFromModel.transform(X,y) | 将X缩小为选定的特征,返回值为去除不相关特征后的数据,一般是调用fit()方法之后再调用 |
SelectFromModel.fit_transform(X,y) | 根据训练集训练并返回去除不相关特征后的数据,一步到位 |
3、降维
当特征选择完成后,可以直接训练模型了,但是可能由于特征矩阵过大,导致计算量大,训练时间长的问题,因此降低特征矩阵维度也是必不可少的。常见的降维方法除了以上提到的基于L1惩罚项的模型以外,另外还有主成分分析法(PCA)和线性判别分析(LDA),线性判别分析本身也是一个分类模型。PCA和LDA有很多的相似点,其本质是要将原始的样本映射到维度更低的样本空间中,但是PCA和LDA的映射目标不一样:PCA是为了让映射后的样本具有最大的发散性;而LDA是为了让映射后的样本有最好的分类性能。所以说PCA是一种无监督的降维方法,而LDA是一种有监督的降维方法。
相关库 | 作用 |
---|---|
from sklearn.decomposition import PCA | 主成分降维 |
from sklearn.lda import LDA | LDA降维 |
4、模型选择(model_selection)
模型选择是机器学习中的重要环节,涉及到的操作包括数据集切分、参数调整和验证等。
相关库 | 作用 |
---|---|
from model_selection import train_test_split | 切分数据集和测试集,可设置切分比例 |
from model_selection import cross_val_score | 交叉验证,默认K=5折,最后返回K个评分 |
from model_selection import GridSearchCV | 调参常用方法,通过字典类型设置一组候选参数,并制定度量标准,最后返回评分最高的参数 |
5、指标度量(metrics)