一、数据预处理
1.数据清洗
2.数据集成
3.数据转换
4.数据归约
1.数据清洗
现实世界的数据一般是不完整的、有噪声的和不一致的。数据清理例程试图填充缺失的值,光滑噪声并识别离群点,纠正数据中的不一致。
(以上为使用的数据)
①忽略元组:当缺少类标号时通常这样做。除非元组有多个属性缺少值,否则该方法不是很有效。
import pandas as pd
data=pd.read_csv('train.csv')
data.drop('Cabin',axis=1,inplace=True)
data.Cabin.fillna('unknown',inplace=True)
#data里cabin的用unknown填充
④使用属性的均值填充缺失值:例如,假定顾客的平均收入为56000美元,则使用该值替换income中的缺失值。
data.Age.fillna(data.Age.mean(),inplace=True)
#Age里的缺失值用Age的平均数填充
col=['Pclass', 'SibSp', 'Parch', 'Fare', 'Cabin', 'Embarked', 'female', 'male']
#选出不含空值的属性 注意:这里的数据已经做过处理,已经把字符串型转为数字型
notnull=data[pd.notnull(data.Age)]
isnull=data[pd.isnull(data.Age)]
from sklearn.ensemble import GradientBoostingRegressor
G=GradientBoostingRegressor()
G.fit(notnull[col].values,notnull.Age)
isnull.Age=G.predict(isnull[col])
data.Age[pd.isnull(data.Age)]=isnull.Age
c=[4,8,15,21,21,24,25,28,34]
c=pd.Series(c)
s=pd.qcut(c,[0,0.33,0.66,1])
pd.groupby(c,by=s).mean()
用箱均值光滑:
箱1:9,9,9
箱2:22,22,22
箱3:29,29,29
pd.groupby(c,by=s).min()
用箱边界光滑:
箱1:4,4,15
箱2:21,21,24
箱3:25,25,34
pd.groupby(c,by=s).max()
pd.groupby(c,by=s).min()
②回归:可以用一个函数(如回归函数)拟合数据来光滑数据。
③聚类:可以通过聚类检测离群点,将类似的值组织成群或簇。直观地,落在簇集合之外的值视为离群点。
from sklearn.cluster import KMeans
c=[4,8,15,21,21,24,25,28,34]
K=KMeans(n_clusters=3)
import numpy as np
c=np.array(c)
c=c.reshape(9,1)
K.fit(c)
center=K.cluster_centers_
c=center[K.predict(c)]
print c
!!!光滑的方法还有很多
参考文献https://www.douban.com/note/128949687/
本人小白,能力有限,若有错误,请大家指正。