第三章:清洗数据

针对定性数据(数值型数据)

1.识别数据中缺失值

查看数据具体信息

pima.info()

查看数据的大小

pima.shape

统计缺失值

pima.isnull().sum()

对定量数据进行基本统计性描述(如:均值、标准差、一些百分位数、最小值、最大值)

pima.describe()

tips: 注意观察统计量是否合理,比如:BMI指数最小值为0,这有悖于医学常识,因此BMI变量存在问题。
替换处理

cols = ['plasma_glucose_concentration', 'diastolic_blood_pressure', 'triceps_thickness', 'serum_insulin', 'bmi']
for col in cols:
    pima[col].replace([0], [None], inplace=True)

2.处理缺失值

2.1删除缺失行

pima_dropped = pima.dropna()

2.2填充缺失行(均值)

pima_no = pima.copy()
for col_no in cols:
    pima_no[col_no].fillna(pima_no[col_no].mean(), inplace=True)

具有泛化能力

pima_no = pima.copy()
x_no = pima_no.drop('onset_diabetes', axis=1)
y_no = pima_no['onset_diabetes']
x_train, x_test, y_train, y_test = train_test_split( x_no, y_no, random_state=99)
for col_no in cols:
    x_train[col_no].fillna(x_train[col_no].mean(), inplace=True)
    x_test[col_no].fillna(x_train[col_no].mean(), inplace=True)

2.3机器学习流水线中填充

构造流水线

mean_imputer = Pipeline([ ('imputer', Imputer(strategy='mean') ) ])

2.3各种方法比较

常见机器学习流程

x = pima.drop('onset_diabetes', axis=1)
y = pima['onset_diabetes']
knn_par = {'n_neighbors': [1, 2, 3, 4, 5, 6, 7, 8]}
knn = KNeighborsClassifier()
grid = GridSearchCV(knn, knn_par)
grid.fit(x_dropped, y_dropped)
print(grid.best_score_, grid.best_params_)

删除none值

# 1. 删除None值
pima_dropped = pima.dropna()
# 删除None后机器学习
x_dropped = pima_dropped.drop('onset_diabetes', axis=1)
y_dropped = pima_dropped['onset_diabetes']
knn_par = {'n_neighbors': [1, 2, 3, 4, 5, 6, 7, 8]}
knn = KNeighborsClassifier()
grid = GridSearchCV(knn, knn_par)
grid.fit(x_dropped, y_dropped)
print(grid.best_score_, grid.best_params_)

填充值

# 使用mean(),在划分后填充,具有泛化能力
pima_no = pima.copy()
x_no = pima_no.drop('onset_diabetes', axis=1)
y_no = pima_no['onset_diabetes']
x_train, x_test, y_train, y_test = train_test_split(
    x_no, y_no, random_state=99)
for col_no in cols:
    x_train[col_no].fillna(x_train[col_no].mean(), inplace=True)
    x_test[col_no].fillna(x_train[col_no].mean(), inplace=True)
knn_no = KNeighborsClassifier()
knn_no.fit(x_train, y_train)
knn_no.score(x_test, y_test)

流水线填充

# 流水线作业:Imputer
knn_params = {'classify__n_neighbors': [1, 2, 3, 4, 5, 6, 7]}
knn_imuter = KNeighborsClassifier()
# mean_imputer = Pipeline([ ( 'imputer',Imputer(strategy = 'median' )) ,( 'classify', knn_imuter) ])
mean_imputer = Pipeline(
    [('imputer', Imputer(strategy='mean')), ('classify', knn_imuter)])
x_iputer_mean = pima.drop('onset_diabetes', axis=1)
y_iputer_mean = pima['onset_diabetes']
grid_iputer_mean = GridSearchCV(mean_imputer, knn_params)
grid_iputer_mean.fit(x_iputer_mean, y_iputer_mean)
print(grid_iputer_mean.best_score_, grid_iputer_mean.best_params_)

3.标准化与归一化

# 标准化与归一化
knn_params_z = {'classify__n_neighbors': [1, 2, 3, 4, 5, 6, 7]}
knn_imuter_z = KNeighborsClassifier()
# min-max标准化
mean_imputer_minmax = Pipeline([('imputer', Imputer(
    strategy='median')), ('standardize', MinMaxScaler()), ('classify', knn_imuter_z)])
# 行标准化
mean_imputer_n = Pipeline([('imputer', Imputer(
    strategy='median')), ('standardize', Normalizer()), ('classify', knn_imuter_z)])
# z标准化
mean_imputer_z = Pipeline([('imputer', Imputer(
    strategy='median')), ('standardize', StandardScaler()), ('classify', knn_imuter_z)])
x_iputer_mean_z = pima.drop('onset_diabetes', axis=1)
y_iputer_mean_z = pima['onset_diabetes']
grid_iputer_mean_z = GridSearchCV(mean_imputer_z, knn_params_z)
grid_iputer_mean_z.fit(x_iputer_mean_z, y_iputer_mean_z)
print(grid_iputer_mean_z.best_score_, grid_iputer_mean_z.best_params_)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容

  • 值数据清洗 刚开始接触的数据,并不如我们想的那么完美, 数据存在缺失值以及一些脏数据。数据清洗也包括对数据进行再处...
    00_zero阅读 881评论 1 1
  • 数据形式 数据读取 数据预处理 数据收集及读取 很多人认为数据分析就是将数据可视化或者对数据趋势做出预测,其实是不...
    Clemente阅读 2,115评论 0 5
  • 缺失值简介 造成数据缺失的原因 有些信息暂时无法获取。例如小越现在在看哪个小姐姐 有些信息是被遗漏的。可能是因为输...
    1想得美阅读 18,366评论 1 12
  • Python中的pandas模块进行数据分析。 接下来pandas介绍中将学习到如下8块内容: 1、数据结构简介:...
    软件测试学习提升阅读 1,922评论 1 7
  • 采买年货时我给妈妈准备了一袋酥糖,孩子说他也想吃,不过只想吃一两颗,不要那么多,于是打了个如意算盘,说等过年时去姥...
    格兰杰太原阅读 270评论 0 3