一、变量识别
变量识别就是从变量类型、数据类型等方面进行分析。
可以从以下方面进行变量识别:1、输入变量与输出变量
- 输入变量(也称为“predictor”或者“特征”)
- 输出变量(也称为“target”或者“标签)
2、数据类型
- 字符型数据
- 数值型数据
3、变量(特征)类型
- 连续型变量
- 数值型变量
二、变量分析
1、单变量分析
- 对于连续性变量,需要统计数据的中心分布趋势和变量分布
- 对于类别型变量,一般使用频次或者占比表示每一个类别的分布情况,对应的衡量指标分别是变量的频次(次数)和频率(占比),可以用柱状图来表示可视化分布情况。
2、双变量分析
使用双变量分析可以发现变量之间的关系。根据变量类型的不同,可以分为连续型与连续型、类别型与类别型、类别型与连续型三种双变量分析组合。
(1)连续型与连续型。绘制散点图和计算相关性是分析连续性与连续型双变量的常用方法- 绘制散点图:散点图的形状可以反应变量之间的关系是线性(linear)还是非线性(non-linear)
- 计算相关性:散点图只能直观的显示双变量之间的关系,但不能说明关系的强弱,而相关性可以对变量之间的关系进行量化分析,相关性系数的公式如下:
相关性系数的取值区间为[-1,1]。当相关性系数为-1时,表示强负线性相关;当相关性系数为1时,表示强正线性相关;当相关性系数为0时,表示不相关。
import numpy as np
X = np.array([65,72,78,65,72,70,65,68])
Y = np.array([72,69,79,69,84,75,60,73])
np.corrcoef(X,Y) #计算X,Y 的相关性
输出
array([[1. , 0.64897259]
[0.64897259 , 1. ]])
一般来说,在取绝对值后,0~0.09为没有相关性,0.1 ~0.3为弱相关,0.3 ~0.5为中等相关,0.5 ~1为强相关。
(2)类别型与类别型。对于类别型与类别型双变量,一般采用双向表、堆叠柱状图和卡方检验进行分析。
- 双向表:这种方法是通过建立频次(次数)和频率(占比)的双向表来分析变量之间的关系
- 堆叠柱状图:这种方法比双向表更加直观
- 卡方检验:主要用于两个或两个以上样本率(构成比)及两个二值型离散变量的关联性分析,即比较理论频次与实际频次的吻合程度和拟合优度。
以iris数据集为例,在sklearn库中使用卡方检验筛选与目标变量相关的特征,示例代码如下:
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
iris =load_iris()
X,y = iris.data, iris.target
chiValues = chi2(X,y)
model = SelectKBest(chi2, k=2)
model.fit_transform(X,y);
print(model)
print(model.scores_)
print(model.pvalues_)
(3)类别型与连续型。在分析类别型与连续型双变量时,可以绘制小提琴图(Violin Plot),这样可以分析类别变量在不同类别时,另一个连续变量的分布情况。
注:小提琴图结合了箱型图和密度图的相关特征信息,可以直观、清晰地显示数据地分布,常用于展示数据地分布及相关的概率密度。
三、缺失值处理
1、缺失值产生原因- 机械原因:由机械导致的数据缺失,比如数据存储失败、存储器损坏、机械故障导致某段时间的数据未能收集到(对定时数据采集而言)。
- 人为原因:由人的主观失误、历史局限或有意隐瞒造成的数据缺失。如在市场调查中被访问人拒绝透露相关问题的答案,或者回答的问题是无效的,或者数据录入人员漏录了数据
2、缺失值分类(从缺失的分布来看)
- 完全随机丢失:即对所有的观察结果,丢失的概率是相同的。例如,在数据收集过程中,受访者想在抛出一个硬币之后,再决定是否宣布他们的收入。如果硬币为正面,受访者则宣布自己的收入,反之则不宣布。这里的每个观察值都具有相同的缺失机会。
- 随机丢失:即变量的值随机丢失并且丢失的概率会因其他输入变量的值或者级别不同而变化。例如,在收集年龄数据信息时,女性的年龄数据的缺失率要高于男性的。
- 不可预测因子导致的缺失:即数据不是随机缺失,而是受一切潜在的因子的影响。例如,在医学研究中,如果一个特定的诊断会导致病人的不适,那么这项研究就很有可能会被抛弃。这个缺失值并不是随机发生的,而是依赖于”不适“这一潜在的因子。
- 取决于自身的缺失:即发生缺失的概率受到缺失值本身的影响。例如收入特别高和特别低的人不愿意提供自己的收入数据。
3、缺失值的处理方法
(1)删除。删除缺失值有两种方法:成列删除和成对删除。
方式 | 处理方法 | 特点 |
---|---|---|
成列删除 | 删除任何变量丢失的观察结果 | 方法简单,样本减少,拟合能力降低 |
成对删除 | 删除对应的缺失值 | 保留更多的样本,不同的变量使用的大小不同的数据集 |
注:当缺失数据的性质为"完全随机丢失"时,删除缺失值可能会让模型的输出产生偏离
(2)平均值、众数、中值填充。其首先是利用从有效数据集中识别出的关系来评估缺失值,然后用计算的该变量所有的已知的平均值或中值(定量属性)或众数(定性属性)来替换给定属性的缺失值,此方法也是最常用的方法,具体操作为一般填充和相识样本填充。
一般填充是用该变量下所有非缺失值的平均值或中值来补全缺失值
相似样本填充是利用具有相似特征的样本的值或者近似值来填充
(3)模型预测填充。即通过建立预测模型来填补缺失值。在这种情况下,会把数据集分为两份:一份是没有缺失值的用作训练值;另一部分是有缺失值的,用作测试集。这样,缺失的变量就是预测目标,此时可以使用回归、分类等方法来完成填充。
当然这种方法也有不足之处。首先,预测出来的值往往更加“规范”;其次,如果变量之间不存在关系,则得到的缺失值会不准确。
四、异常值的处理
通常将远远偏离整个样本总体的观测值称为异常值。
1、异常值产生的原因和影响
异常值可能是由数据输入误差、测量误差、实验误差、有意造成异常值、数据处理误差、采样误差等因素造成的。
- 数据输入误差:是指在数据收集、输入过程中。人为错误产生的误差。例如,客户的年收入 是10万元,如果数据录入人员多加了一个0,则年收入变为100万元,是原来的10倍,显然,这个样本与其他的样本相比是异常值。
- 测量误差: 这是异常值最常见的来源。
- 实验误差:实验误差也会导致出现异常值。
- 有意造成异常值:这通常发生在一些涉及敏感数据的报告中。例如,当要求青少年报告消费的酒精量时,他们可能会上报比真实值小的数。
- 数据处理误差:在操作或数据提取的过程中造成的误差。
- 采样误差:例如,我们要测量运动员的身高,而样本中包括几名很高的篮球运动员 ,这样可能会导致出现异常值。
异常值对模型和预测分析的影响主要有增加错误方差,降低模型的拟合能力:异常值的非随机分布会降低正态性;与真实值可能存在偏差;影响回归、方差分析等统计模型的基本假设。
2、异常值的检测
一般可以采用可视化方法进行异常值的检测,常用工具包括箱线图、直方图、散点图等。
如图所示。箱线图是一种很好的可视化工具,常常用于可视化基本的统计数据,如异常值、最小值、最大值、四分位数等。
利用箱线图检测异常值的原则如下:
-
不在-1.5IQR和1.5IQR之间的样本点认为时异常值。
-
使用封顶方法可以认为在第5和第95百分位数范围之外的任何值都是异常值。
-
距离平均值为三倍标准差或者更大的数据点可以被认为是异常值。
注:由于异常值只是对有影响的特殊数据点进行检测,因此他的选择也是取决于对业务的理解。
3、异常值的处理方法
对异常值一般采用删除、转换、填充、区别对待等方法进行处理。
- 删除:如果是由于输入误差、数据处理误差引起的异常值,或者异常值很小,则可以将其删除。
- 转换:数据转换可以消除异常值,如对数据取对数会减轻由极值引起的变化。
- 填充:像处理缺失值一样,我们对异常值进行修改,如使用平均值、中值或其他的一些填补方法,则可以进行填充处理,如使用预测模型填充。
- 区别对待 :如果存在大量的异常值,则应该在统计模型中区别对待。其中一个方法是将数据分为两个不同的组,异常值归一组,非异常值归一组,且两组分别建立模型,然后最终将两组的输出组合。
五、变量转换
1、变量转换的目的
在使用直方图、核密度估计等工具对特征分布进行分析的过程中,我们可能会发现一些变量的取值分布不均匀,这将会极大的影响估计。为此,我们需要对变量的取值区间等进行转换,使其分布落在合理的区间内。
2、变量转换的方法
变量转换的方法主要包括缩放比例或标准化、非线性关系转换成线性、使倾斜分布对称、变量分组等。
- 缩放比例或标准化:数据具有不同的缩放比例,其不会改变变量的分布
- 非线性关系转换成线性:将非线性关系转换成线性关系更容易理解,其中对数变换是常用的一种转换方式
- 使倾斜分布对称:对于向右倾斜的分布,对变量取平方根或立方根或对数;对向左倾斜的分布,对变量取平方或立方或指数
- 变量分组:根据不同的目标把变量按不同类别分组
几种常用的转换方法:
- 对数变换:对变量取对数,可以更改变量的分布形状,其通常应用于向右倾斜的分布,缺点是不能用于含有零或负值的变量
- 取平方跟或立方根:变量的平方根和立法根对其分布有波形的影响。取平方根可用于包括零的正值,取立方根可用于取值中有负值(包括零)的情况。
- 变量分组:对变量进行分类,如可以基于原始值、百分比或者频率等对变量分类。例如,我们可以将收入分为高、中、低三类。其可以应用于连续性数据,超高维逻辑回归就是采取这种方法产生one-hot变量特征的
六、新变量的生成
1、新变量生成的目的
变量生成是基于现有的变量生成新变量的过程。生成的新变量可能与目标变量有更好的相关性,有助于进行数据分析。
2、变量生成的方法
(1)创建派生变量:指使用一组函数或不同方法从现有变量创建新变量。例如,在某个数据集中需要预测缺失的年龄值,为了预测缺失项的价值,我们可以提取名称中的称呼(Master、Mr、Miss、Mrs)作为新变量。
(2)创建哑变量:哑变量方法可将类别型变量转换为数值变量。