python中fit和score_python数据标准化常⽤⽅法,z-scoremin-
m。。。
数据标准化
在数据分析之前,我们通常需要先将数据标准化(normalization),利⽤标准化后的数据进⾏数据分析。数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和⽆量纲化处理两个⽅⾯。数据同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作⽤⼒的综合结果,须先考虑改变逆指标数据性质,使所有指标对测评⽅案的作⽤⼒同趋化,再加总才能得出正确结果。数据⽆量纲化处理主要解决数据的可⽐性。数据标准化的⽅法有很多种,常⽤的有”最⼩-最⼤标准化”、”Z-score标准化”和”按⼩数定标标准化”等。经过上述标准化处理,原始数据均转换为⽆量纲化指标测评值,即各指标值都处于同⼀个数量级别上,可以进⾏综合测评分析。
常见的⼏种形式
通常数据标准化有以下⼏种:
Min-max 标准化数据缩放:
x′=x−xminxmax−xminx′=x−xminxmax−xmin
大学必备吧
min-max标准化⽅法是对原始数据进⾏线性变换。设minA和maxA分别为属性A的最⼩值和最⼤值,将A的⼀个原始值x通过min-max标准化映射成在区间[0,1]中的值x’,其公式为:
物理老师新数据=(原数据-最⼩值)/(最⼤值-最⼩值)
z-score 标准化
这种⽅法基于原始数据的均值(mean)和标准差(standard deviation)进⾏数据的标准化。将A的原始值x使⽤z-score标准化到x’。z-score标准化⽅法适⽤于属性A的最⼤值和最⼩值未知的情况,或有超出取值范围的离群数据的情况。将数据按其属性(按列进⾏)减去其均值,然后除以其⽅差。最后得到的结果是,对每个属性/每列来说所有数据都聚集在0附近,⽅差值为1。
x′=x−μδ μ为数据的均值 δ为⽅差x′=x−μδμ为数据的均值δ为⽅差
Python标准化预处理函数:preprocessing.scale(X,axis=0, with_mean=True, with_std=True, copy=True):1
将数据转化为标准正态分布(均值为0,⽅差为1)preprocessing.minmax_scale(X,feature_range=(0, 1), axis=0, copy=True):1
将数据在缩放在固定区间,默认缩放到区间 [0, 1]preprocessing.maxabs_scale(X,axis=0, copy=True):1
数据的缩放⽐例为绝对值最⼤值,并保留正负号,即在区间 [-1.0, 1.0] 内。唯⼀可⽤于稀疏数据
scipy.spar的标准化bust_scale(X,axis=0, with_centering=True, with_scaling=True,copy=True):1
通过 Interquartile Range (IQR) 标准化数据,即四分之⼀和四分之三分位点之间
对应的标准化预处理类:classpreprocessing.StandardScaler(copy=True, with_mean=True,with_std=True):
标准正态分布化的类
属性:scale_:ndarray,缩放⽐例
mean_:ndarray,均值
var_:ndarray,⽅差
n_samples_en_:int,已处理的样本个数,调⽤partial_fit()时会累加,调⽤fit()会重设
1234classpreprocessing.MinMaxScaler(feature_range=(0, 1),copy=True):
将数据在缩放在固定区间的类,默认缩放到区间 [0, 1],对于⽅差⾮常⼩的属性可以增强其稳定性,维持稀疏矩阵中为0的条⽬
属性:min_:ndarray,缩放后的最⼩值偏移量
scale_:ndarray,缩放⽐例
data_min_:ndarray,数据最⼩值
data_max_:ndarray,数据最⼤值
data_range_:ndarray,数据最⼤最⼩范围的长度12345classpreprocessing.MaxAbsScaler(copy=True):
数据的缩放⽐例为绝对值最⼤值,并保留正负号,即在区间 [-1.0, 1.0] 内。可以⽤于稀疏数据scipy.spar
属性:scale_:ndarray,缩放⽐例蠢子
max_abs_:ndarray,绝对值最⼤值
n_samples_en_:int,已处理的样本个数
123classpreprocessing.RobustScaler(with_centering=True,with_scaling=True, copy=True):1
通过 Interquartile Range (IQR) 标准化数据,即四分之⼀和四分之三分位点之间
宣传稿
属性:center_:ndarray,中⼼点
scale_:ndarray,缩放⽐例12classpreprocessing.KernelCenterer:
⽣成 kernel 矩阵,⽤于将 svm kernel 的数据标准化(参考资料不全)以上⼏个标准化类的⽅法:
fit(X[,y]):根据数据 X 的值,设置标准化缩放的⽐例
transform(X[,y, copy]):⽤之前设置的⽐例标准化 X
fit_transform(X[, y]):根据 X设置标准化缩放⽐例并标准化
partial_fit(X[,y]):累加性的计算缩放⽐例
inver_transform(X[,copy]):将标准化后的数据转换成原数据⽐例
get_params([deep]):获取参数
t_params(**params):设置参数
数据归⼀化alize(X,norm='l2', axis=1, copy=True):1
将数据归⼀化到区间 [0, 1],norm 可取值 ‘l1’、’l2’、’max’。可⽤于稀疏数据
scipy.sparclasspreprocessing.Normalizer(norm='l2', copy=True):1
数据归⼀化的类。可⽤于稀疏数据 scipy.spar⽅法:fit(X[,y])、transform(X[, y,copy])、fit_transform(X[,y])、
get_params([deep])、t_params(**params)12
数据⼆值化preprocessing.binarize(X,threshold=0.0, copy=True):1
将数据转化为 0 和 1,其中⼩于等于 threshold 为 0,可⽤于稀疏数据
scipy.sparclasspreprocessing.Binarizer(threshold=0.0,copy=True):1
⼆值化处理的类,可⽤于稀疏数据 scipy.spar
⽅法:fit(X[,y])、transform(X[, y,copy])、fit_transform(X[,y])、get_params([deep])、t_params(**params),其中fit 函数不会
做任何操作
类别数据编码
数据的某些特征是⽂本,特征是⽆序的,⽐如国籍,但数字是有序的,所以不能直接⽤数字编码
classpreprocessing.OneHotEncoder(n_values='auto',categorical_features='all', dtype='float', spar=True,handle_unknown='error'):1
将具有多个类别的特征转换为多维⼆元特征,所有⼆元特征互斥,当某个⼆元特征为 1 时,表⽰取某个类别
参数:
n_values:处理的类别个数,可以为‘auto’,int或者 int数组
categorical_features:被当作类别来处理的特征,可以为“all”或者下标数组指定或者mask数组指定
属性:
active_features_:ndarray,实际处理的类别数
feature_indices_:ndarray,第 i个原特征在转换后的特征中的下标在 feature_indices_[i] 和 feature_indices_[i+1]之间n_values_:ndarray,每维的类别数
⽅法:fit(X[, y])、transform(X[, y,copy])、fit_transform(X[,y])、get_params([deep])、
t_params(**params)classpreprocessing.LabelBinarizer(neg_label=0, pos_label=1,spar_output=Fal):1
和 OneHotEncoder 类似,将类别特征转换为多维⼆元特征,并将每个特征扩展成⽤⼀维表⽰
属性:
class:ndarry,所有类别的值
栽培自己
y_type_:str
multilabel_:bool
spar_input_:bool
indicator_matrix_:str
⽅法:fit(X[,y])、transform(X[, y,copy])、fit_transform(X[,y])、inver_transform(y)、get_params([deep])、
t_params(**params)
preprocessing.label_binarize(y,class, neg_label=0, pos_label=1, spar_output=Fal):
LabelBinarizer 类对应的处理函数
classpreprocessing.LabelEncoder:
将类别特征标记为 0 到 n_class - 1 的数
⽅法:fit(X[,y])、transform(X[, y,copy])、fit_transform(X[,y])、inver_transform(y)、get_params([deep])、
t_params(**params)
classpreprocessing.MultiLabelBinarizer(class=None,spar_output=Fal):
和 LabelBinarizer 类似
学习的手抄报feature_extraction.DictVectorizer类
patsy包
数据缺失classpreprocessing.Imputer(missing_values='NaN',strategy='mean', axis=0, verbo=0, copy=True):1参数:missing_values:int 或者“NaN”,对np.nan的值⽤ "NaN"strategy:"mean"、"median"、"most_frequent"12属性:statistics_:ndarray,当axis==0时,取每列填补时⽤的值1
⽅法:fit(X[,y])、transform(X[, y,copy])、fit_transform(X[,y])、get_params([deep])、t_params(**params)
⽣成多项式数据
可以将数据多项式结合⽣成多维特征,⽐如 [a,b] 的⼆次多项式特征为 [1, a, b, a^2, ab,
b^2]classpreprocessing.PolynomialFeatures(degree=2,interaction_only=Fal, include_bias=True):1
参数:degree:int,多项式次数
interaction_only:boolean,是否只产⽣交叉相乘的特征
include_bias:boolean,是否包含偏移列,即全为1 的列
属性:
powers_:ndarray,⼆维数组。powers_[i,j] 表⽰第 i 维输出中包含的第 j 维输⼊的次数
n_input_features_:int,输⼊维数
n_output_features_:int,输出维数1234567
⽅法:
fit(X[,y])、transform(X[, y,copy])、fit_transform(X[,y])、get_params([deep])、t_params(**params)
增加伪特征preprocessing.add_dummy_feature(X,value=1.0):1
在 X 的第⼀列插⼊值为 value 的列
⾃定义数据转换
可以使⽤⾃定义的 python函数来转换数据
classpreprocessing.FunctionTransformer(func=None,validate=True, accept_spar=Fal, pass_y=Fal):1⽅法:fit(X[,y])、transform(X[, y,copy])、fit_transform(X[,y])、get_params([deep])、t_params(**params)1案例
⾃⼰写⼀个公式来进⾏标准化:def my_scale(data):
mean = sum(data) / len(data) #先求均值
variance = ( sum([ (I-mean) ** 2 for I in data]) ) / len(data) #再求⽅差
normal = [(I - mean) / (variance ) ** 0.5 for I in data] #按照公式标准化
return normal12345
利⽤pandas处理
对每⼀列进⾏标准化(每个数值在0-1之间)import numpy as np
import pandas as pd
np.random.ed(1)
df = pd.DataFrame(np.random.randn(4,4)* 4 + 3)
⽅法⼀
df=df.apply(lambda x: (x - np.min(x)) / (np.max(x) - np.min(x)))
⽅法⼆
王佳莹df=(df - df.min()) / (df.max() - df.min()) 12345678
使⽤scale⽅法进⾏标准化from sklearn import preprocessing
杭州社保局电话
import numpy as np
X_train = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]])
X_scaled = preprocessing.scale(X_train)print(X_scaled)12345678
[[ 0. -1.22474487 1.33630621]
[ 1.22474487 0. -0.26726124]
[-1.22474487 1.22474487 -1.06904497]]
MaxMinScaler⽅法import numpy as np
from sklearn import preprocessing
X_train = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]])
min_max_sacler = preprocessing.MinMaxScaler()
min_max_sacler.fit(X_train)print(min_ansform(X_train))1234567891011 [[0.5 0. 1. ]
[1. 0.5 0.33333333]
[0. 1. 0. ]]