2)相关性过滤
卡方过滤:
- 专门针对分类问题,不能计算负数
- feature_selection.chi2,结合feature_selection.SelectKBest(选出前k分数最高特征)
- chi2(x,y)返回卡方值和p值,
- 如何选择k值(想保留特征值)?使用p值。p小于0.05或0.01:特征与标签相关。k=(chi_value.shape[0]-(p_value>0.05).sum())#特征数-想删除的特征数
F检验
2)相关性过滤
卡方过滤:
F检验
特征选择feature_selection
一、理解数据:根据业务理解选择数据(特征选择之前要与数据提供者沟通)
二、四种选择方法
1、过滤法:根据统计指标过滤,目标是降低计算成本
过滤法主要对象:需要遍历特征或升维的算法(最近邻算法KNN、支持向量机SVM、神经网络、回归算法、单棵决策树)
1)方差过滤:VarianceThreshold模块:
2、嵌入法
3、包装法
4、降维算法
特征提取feature extraction
特征创造feature creation
特征选择feature_selection
一、理解数据:根据业务理解选择数据(特征选择之前要与数据提供者沟通)
二、四种选择方法
1、过滤法:根据统计指标过滤
1)方差过滤:VarianceThreshold模块:
2、嵌入法
3、包装法
4、降维算法
特征提取feature extraction
特征创造feature creation
四、处理连续型特征:二值化与分段
prepscessing.Binarizer二值化,文本数据常见操作
属性threshold:设置阈值,大于阈值1,小于0
prepscessing.KBinsDiscretizer分箱
1、3个参数
1)n_bins:分箱个数,默认5
2)encode:默认"onehot"
"onehot":一列一类,有该类1,无0
"ordinal":有几个特征几列,每个特征用数字显示类别
"onehot-dense"不常用
3)strategy:定义箱宽,默认"quantile"
"uniform":等宽分箱,特征值极差/箱数
"quantile":等位分箱,每箱样本数相同
"kmeans":聚类分箱,分类,同类一箱
三、处理分类型特征:编码与哑变量
1、preprocessing.LabelEncoder:把分类转换为分类数值
classes_属性,查看标签中有多少类别
2、preprocessing.OrdinalEncoder:特征编码模块,把分类转换成数字,类别独立
categories_属性,查看每个特征中有多少类别
3、preprocessing.OneHotEncoder:独热编码,特征转换成哑变量,分类有联系
参数categories,='auto'自己找找有几类
接口get_feature_names():返回稀疏矩阵每一列列的类别
独热编码处理方法:合并表,删除列,改列索引
4、preprocessing.LabelBinarizer标签
二、缺失值处理
用来填缺失值的类:impute.SimpleImputer
1、四个参数
1)missing_values:缺失值长什么样,默认np.nan
2)strategy:填补策略,默认均值"mean","median"中位数,"most_frequent"众数,"constant"数值(只有前两个可填数字型)
3)fill_value:策略为constant使用,表示要填充的值,常用0
4)copy:默认为True,创建副本
二、缺失值处理
用来填缺失值的类:impute.SimpleImputer
1、四个参数
1)missing_values:缺失值长什么样,默认np.nan
2)strategy:填补策略,默认均值"mean"
3)fill_value:策略为constant使用,表示要填充的值,常用0
4)copy:默认为True,创建副本
数据预处理与特征工程
数据挖掘的五大流程:获取数据、数据预处理、特征工程、建模、上线验证
数据预处理preprocessing & impute
一、数据无量纲化(统一规格,特例:决策树、树的集成算法不需要)
1、中心化 zero-centered/mean subtraction
本质是所有记录减去一个固定值
1)preprocessing.MinMaxScaler
如何用numpy实现归一化?使用公式
import numpy as np
x=[[-1,2],[-0.5,6],[0,10],[1,18]]
x=np.array(x)#转成数组
#归一化
x_nor=(x-x.min(axis=0))/(x.max(axis=0)-x.min(axis=0))
x_nor
2)preprocessing.StandardScaler
3)如何选择?
2、缩放处理 scale
本质是所有记录除以一个固定值
数据预处理与特征工程
数据挖掘的五大流程:获取数据、数据预处理、特征工程、建模、上线验证
数据预处理preprocessing & impute
一、数据无量纲化(统一规格,特例:决策树、树的集成算法不需要)
1、中心化 zero-centered/mean subtraction
本质是所有记录减去一个固定值
1)preprocessing.MinMaxScaler
2、缩放处理 scale
本质是所有记录除以一个固定值
数据预处理与特征工程
数据挖掘的五大流程:获取数据、数据预处理、特征工程、建模、上线验证
首先调整
机器学习调参基本思想
调参目标是提升某个模型评估指标
1、泛化误差(衡量模型在未知数据上准确率的指标)
1)在测试集上表现不好:泛化能力不够
2)泛化误差受模型结构(复杂度)影响(U型曲线),调参之前,判断模型在曲线哪个部分
3)模型太简单或太复杂,泛化误差都会升高,追求的是中间的平衡点
4)模型太复杂:过拟合,太简单:欠拟合
5)树模型和树的集成模型,越深、枝叶越多、模型越复杂
6)树模型和树的集成模型目标:减少模型复杂度(剪枝),使模型向图像左边移动
2、各个参数对树模型的影响程度(由大到小)
1)n_estimators:计算量允许,越大越好,不影响单个模型复杂度
2)max_depth:默认让树生长到最茂盛,下降,模型更简单
3)min_samples_leaf、min_samples_split:默认最小限制1、2,即最高复杂度,调大,模型更简单
4)max_features:默认特征总数开平方(auto),中间复杂度,减小,更简单,增加,更复杂(不怎么用)
5)criterion:一般选gini(影响看具体情况)
x_labels=['full data'
pd.concat()
第一个参数:需要连接的所有对象用列表包起来
第二个参数:axis=1左右相连
特征矩阵和标签有某种联系,可以交换
特征矩阵缺失值标签:x_test
特征矩阵缺失值:需要预测的y_test
特征矩阵不缺失值:y_train,标签:x_train
(这种做法适用于某一列特征大量缺失,若多列缺失,遍历特征,从缺失最少的列填补,填补其中一列时,先将其它特征缺失值用0代替)
imp_mean=S
RandomForestRegressor(随机森林回归)
一、参数criterion取值不同(与决策树部分相同)
1)"mse":回归树中,MSE是分支质量衡量指标,也是回归树回归质量衡量指标
2)"friedman_mse"
3)"mae"
二、模型衡量指标不同:R²或MSE(常用)
三、常用接口apply, predict, fit, score,没有predict_proba
注:如何打印模型评估指标列表?
import sklearn
sorted(sklearn.metrics.SCORERS.keys())
2、random_state
1)随机森林中的random_state控制的是生成森林的模式,设成固定值生成一组固定的树
2)决策树中的random_state控制随机选择特征分支
3)随机性越大,bagging效果一般越好,因此一般不设置,若追求稳定性可设置成固定值
3、bootstrap、oob_score
1)bootstrap默认为True,控制有放回的随机抽样
2)oob_score默认为False,设置为True表示希望用袋外数据测试模型,此时训练函数中放入完整数据(不用划分训练集、测试集)
三、重要属性
1、estimators_,查看森林中树的状况
.estimators[num]取出一棵树
2、oob_score_,查看在袋外数据上测试结果
3、feature_importance_查看特征重要性(用zip把特征重要性和特征名连起来,易于观察哪一个特征更为重要)
四、重要接口
1、4个常用接口:apply(返回测试集中每一个样本在每一棵树中叶子节点的索引;需要画图或需要提取单独叶子节点时使用)、fit、predict(返回对测试集预测的标签)、score
2、predict_proba:
1)返回每个测试样本被分到每一类标签的概率,标签几类,返回几个
二、RandomForestClassifier(随机森林分类器)参数
1、n_estimators:森林中树木的数量
1)越大往往越好,但计算量越大,达到一定值精确性波动,一般在0-200内选
2)单个决策树准确度越高,随机森林的准确度也会越高
随机森林
一、概述
1、集成算法
1)集成算法考虑多个评估器的结果,汇总获取更好的分类、回归表现
2)三种集成算法:装袋法bagging(模型独立),提升法boosting(模型相关),stacking
3)随机森林是一种bagging集成算法