缺失值的处理: pandas dropna fillna resplace 数据当中的格式应该是np.nan格式
一般是删除或填补。
一般是按列去填补。每列的中位数,平均值啥的。
import numpy as np
from sklearn.impute import SimpleImputer
def im():
#缺失值处理
#缺失值的标记是固定的 NaN nan
im=SimpleImputer(missing_values=np.nan,strategy='mean')
data=im.fit_transform([[1, 2],
[np.nan, 3],
[7, 6]])
print(data)
if __name__=='__main__':
im()
#归一化
特点:通过对原始数据进行变换把数据映射到(默认为[0,1])之间
x'= (x-min)/(max-min)
x''=x'(mx-mi)+mi 调整区间,类似不要0-1 ,变成2-3这样
注:作用于每一列,max为一列的最大值,min为一列的最小值,那么X''
为最终结果,mx,mi分别为指定区间值默认mx为1,mi为0
特征一
90 1
60 ----> 0
75 0.5
from sklearn.preprocessing import MinMaxScaler
def mm():
'''
归一化处理
'''
#可指定范围
mm=MinMaxScaler(feature_range=(2,3))
data=mm.fit_transform([[90,2,10,40],
[60,4,15,45],
[75,3,13,46]])
print(data)
if __name__=='__main__':
mm()
标准化
'''
(x-mean)/v²
标准化不太容易受异常值的影响,只能说影响不太大
方差为0 意味着所有特征都一样 方差代表稳定性。 方差越大越离散,方差越小越相近
特点:通过对原始数据进行变换把数据变换到均值为0,方差为1范围内 并不是完全的均值为0,方差为1。相近的范围
求的是各特征的均值和方差。
from sklearn.preprocessing import StandardScaler
import numpy as np
def stand():
std=StandardScaler()
data=std.fit_transform([[ 1, -1, 3],
[ 2, 4, 2],
[ 4, 6, -1]])
print(data)
print(std.mean_())
return None
if __name__=='__main__':
stand()
#数据的降维 把特征的数量给减少
# 例如 有几百个特征,没必要对全部的特征进行分析
#方法 :特征选择 主成分分析
#冗余 部分特征相关性高,会消耗计算机的性能
#特征选择的三大武器 Fliter(过滤):VarianceThreshold对方差进行过滤 Embedded(嵌入式):正则化、决策树
#Fliter 对方差进行过滤 如果方差为0 证明数据都一样那就没什么价值,方差的大小考虑特征的所有的特征数据情况
'''
[[0, 2, 0, 3],
[0, 1, 4, 3],
[0, 1, 1, 3]]
'''
from sklearn.feature_selection import VarianceThreshold
def var():
#删除低方差的一些特征
#特征数量就会减少
var=VarianceThreshold(threshold=1.0)#类似是一个范围区间
data=var.fit_transform([[0, 2, 0, 3],
[0, 1, 4, 3],
[0, 1, 1, 3]])
print(data)
return None
if __name__=='__main__':
var()
'''
本质:PCA是一种分析、简化数据集的技术
目的:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。
作用:可以削减回归分析或者聚类分析中特征的数量
一般特征数量达到上百个或上千个时候,首先考虑要不要用pca去降维,减少特征,并不是删除某些特征,里面的数据
会改变,特征数量也会减少。
低纬度表示高纬度 会产生一些信息差异但是 数据会存在一些损失 仍然可代表原来的意思
pca要让信息损失尽可能最小
'''
#高纬度问题 : 特征之间容易出现一些相关的数据
'''
特征1 特征50
1 2
2 4
3 6
4 8
5 11
6 13
乘以2之后很相似。
PCA(n_components=None) 小数(百分比0-1) 0.9就是保留90%的信息通常90% - 95% 整数
将数据分解为较低维数空间
[[2,8,4,5],
[6,3,0,8],
[5,4,9,1]]
'''
from sklearn.decomposition import PCA
def pca():
pca=PCA(n_components=0.9)
data=pca.fit_transform([[2,8,4,5],
[6,3,0,8],
[5,4,9,1]])
print(data)
return None
if __name__=='__main__':
pca()
'''
得到的结果没有实际的意义 ,只是降维
[[ 1.28620952e-15 3.82970843e+00]
[ 5.74456265e+00 -1.91485422e+00]
[-5.74456265e+00 -1.91485422e+00]]
两个特征。
'''