Python - 数据预处理

18人阅读 评论(0) 收藏 举报
分类:
以下内容来自《Python数据科学指南》
数据预处理:
修补数据、随机采样、缩放数据、标准化数据、实现分词化、删除停用词、删除标点符号、词提取、词形还原、词袋模型

1. 修补数据
:处理不完整或存在内容丢失的数据。

采用模块:from sklearn.preprocessing import Imputer

#方法一:根据数据中特定值来修补
#imputer = Imputer(missing_values,strategy)
#missing_value是指出哪些是丢失的数据,strategy是如何修补数据的策略
#策略有三种:mean(平均值)、median(中位数)、most_frequent(最常用的值)

#值为0的单元格会被所属的列的平均值替换
imputer = Imputer(missing_values=0,strategy="mean")
x_imputerd = imputer.fit_transform(x) #将数据拟合后转化成修补好的数据


#方法二:基于类别标签进行修补
missing_y = y[2]
x_missing = np.where(y==missing_y)[0] #找到missing_y所有对应的位置编号
print np.mean(x[x_missing,:],axis=0) #行平均策略
print np.median(x[x_missing,:],axis=0) #行中位数策略
2. 随机采样

采用模块:import numpy as np

#从数据集x中随机采样10条记录
no_records = 10
x_sample_indx = np.random.choice(range(x.shape[0]),no_records)
print x[s_sample_indx,:]
#choice里有个函数是replace,若设为False,则为采样不带替换,被采样的数据会被从原始数据中删除,但默认True,则不会影响原始数据集

3. 缩放数据:最小最大缩放,数值分布在[0,1]区间内。
采用模块:from sklearn.preprocessing import MinMaxScaler

minmax = MinMaxScaler(feature_range=(0.0,1.0))
x_t = minmax.fit_transform(x)
4. 标准化数据:将输入的数值转换为平均值为0,标准差为1的形式。

采用模块:from sklearn.preprocessing import scale

#with_mean实现中心化
#with_std实现标准化,使不同特征值下的数据转为相同量纲的数据
x_centered_std = scale(x,with_mean = True,with_std = True)
5. 实施分词化:将文本分词。

采用模块:from nltk.tokenize import sent_tokenize,word_tokenize,line_tokenize

from collection import defaultdict

sentence = "Alvin is me. Welcome to show your code for communication."
sent_list = sent_tokenize(sentence) #分句子

#分词
word_dict = defaultdict(list)
for i,sent in enumerate(sent_list):
    word_dict[i].extend(word_tokenize(sent))

#分段落,前提使原文本中段落之间有段落换行符 \n
line_list = line_tokenize(sentence)
6. 删除停用词:删除常见词。

采用模块:from nltk.corpus import stopwords

stop_words = stopwords.words('english')
words = [w for w in words if w not in stop_words]

7. 删除标点符号
采用模块:import string

words = [w for w in words if w not in string punctuation]
8. 词提取:把词转换它们原本的形态,启发式地为了获得词根形态努力探求消除词的后缀

采用模板:from nltk import stem

#Porter - 波特词提取器,最常用的,转换回词根形态时不是很激进;
#Snowball - 雪球提取器,Porter改良版,省时;
#Lancaster - 兰卡斯特提取器,最激进的,前两种转换后的可读性还好,但这个完全不可读,但速度最快

input_words = ['alvin','ai']
porter = stem.porter.PorterStemmer()
p_words = [porter.stem(w) for w in input_words]

lancaster = stem.lancaster.LancasterStemmer()
l_words = [lancester.stems(w) for w in input_words]

snowball = stem.snowball.EnglishStemmer()
s_words = [snowball-stem(w) for w in input_words]
9. 词形还原:使用变形词形和词表来获得词的词元。只对词形变化的结尾进行转换,并从字典中获得词的基本形态。

采用模板:from nltk import stem

wordnet_lemm = stem.WordNetLemmatizer()
wn_words = [wordnet_lemm.lemmatize(w) for w in input_words]

#默认情况下,词形还原工具会把输入当作名词,然后再还原,但如果动词等,得通过POS标签来调整
wordnet_lemm.lemmatize('running','v')
>>u'run'

10. 词袋模型:创建一个向量,向量的列是本身,词构成了特征项,这些项的数值是二进制、频率或TFIDF
采用模板:from sklearn.feature_extraction.text import CountVectorizer,TfidfTransformer

#ngram_tdm得到的词袋是个稀疏模型,其中ngram_range(1,1)是确保只有一个字或者词,若为(1,2)创建的是单字和多字
#CountVectorizer里面binary参数默认为False,如果设为True,最后矩阵将不统计元素个数,而是1或0,取决于是否出现在文档中
#lowercase默认为True,输出的文本再被映射成特征指标前会先转回小写
count_v_ngram = CountVectorizer(stop_words=stop_words,ngram_range=(1,2))
ngram_tdm = count_v.fit_transform(sentence)

#IDF文档频率的倒数 = 总文档数/词出现的文档数
#TF词频 = 词出现的次数/该文档内词的总数
#TDIDF = TF*IDF
count_v = CountVectorizer(stop_words=stop_words)
tdm = count_v.fit_transform(sentences)
tfidf = TfidfTransformer()
tdm_tfidf = tfidf.fit_transform(tdm)


查看评论

Python数据预处理概述

Python数据预处理概述对于数据分析而言,数据是显而易见的核心。但是并不是所有的数据都是有用的,大多数数据参差不齐,层次概念不清淅,数量级不同,这会给后期的数据分析和数据挖掘带来很大的麻烦,所以有必...
  • YEN_CSDN
  • YEN_CSDN
  • 2016-11-29 22:03:04
  • 1885

用Python进行数据挖掘(数据预处理)

用Python进行数据挖掘(数据预处理)本博客进行数据预处理的方法总结自kaggle的几道题目: 1.HousePrices 2.Titanic 以及比较不错的几个kernels: 1.htt...
  • u011094454
  • u011094454
  • 2017-08-27 19:42:23
  • 6240

Python数据获取和预处理

本阶段在进行机器学习文本挖掘领域相关研究,多次进行在网页上爬取数据的工作。在此对先前爬虫程序、数据预处理程序包括Python基础等内容进行回顾和总结,所有后续涉及的相关内容将会持续更新。 # -...
  • nmumhrmdpc
  • nmumhrmdpc
  • 2017-09-19 10:15:53
  • 305

spark机器学习(Chapter 03)--使用spark-python进行数据预处理和特征提取

1、首先需要准备MovieLens数据集,并查看数据基本情况 数据主要包含3个数据集:u.data,是用户对电影的评分数据,u.item是电影的基本数据,u.user是用户的基本数据。 2、数据分...
  • dengjiaxing0321
  • dengjiaxing0321
  • 2017-06-24 23:03:03
  • 655

十分钟搞定pandas(Python数据预处理库)

本文是对pandas官方网站上《10Minutes to pandas》的一个简单的翻译,原文在这里。这篇文章是对pandas的一个简单的介绍,详细的介绍请参考:Cookbook 。习惯上,我们会...
  • jjddss
  • jjddss
  • 2017-06-08 09:25:28
  • 1260

数据预处理技术与淘宝商品数据预处理案例实战

在大数据时代,数据的重要性显得越来越重要,Python作为一门优秀的编程语言,用于处理数据也非常方便,并且数据的可视化处理功能也非常强大,本课程将使用Python3一步一步讲解数据分析与挖掘以及机器学习相关的知识,并且全程采用实战案例教学,让学员可以从实际场景中学习Python数据挖掘与机器学习。
  • 2017年07月25日 14:08

python数据预处理(抽样、数据集转换)

博文:python大规模数据处理技巧之二:机器学习中常用操作(http://blog.csdn.net/asdfg4381/article/details/51725424) 1、 数据预处理...
  • u010035907
  • u010035907
  • 2017-08-29 10:36:10
  • 372

python数据预处理练习

#ecoding=utf-8 import math import re import csv def fileREAD(fileURL,access): "传入文件路径,返回存储文件内容的...
  • u012155582
  • u012155582
  • 2016-07-28 09:08:42
  • 2287

数据预处理的python实现

1、归一化1.1简单处理列表#归一化处理 raw = [0.07, 0.14, 0.07] norm=[float(i)/max(raw) for i in raw] print(norm)1.2 ...
  • rosefun96
  • rosefun96
  • 2017-12-22 14:39:38
  • 48

利用Python Pandas进行数据预处理-Pandas基本的数据结构

概述 Pandas是Python的一个数据分析包,Pandas最初被作为金融数据分析工具而开发出来,因此,Pandas为时间序列提供了很好的支持。Pandas是基于Numpy构建的含有更高级数据结构...
  • YEN_CSDN
  • YEN_CSDN
  • 2016-12-03 16:04:50
  • 3156
    个人资料
    持之以恒
    等级:
    访问量: 767
    积分: 140
    排名: 119万+
    文章存档