Questions tagged «data-cleaning»

数据清理是统计分析的第一步,其中,对数据集进行编辑以更正错误并将其设置为适合于统计软件处理的形式。

6
如何转换机密数据集中的名称以使其匿名,但保留名称的某些特征?
动机 我使用的数据集包含个人身份信息(PII),有时需要与第三方共享数据集的一部分,以免暴露PII并使我的雇主承担责任。我们通常的做法是完全保留数据,或者在某些情况下降低其分辨率。例如,将确切的街道地址替换为相应的县或人口普查区。 这意味着即使第三方拥有更适合该任务的资源和专业知识,某些类型的分析和处理也必须在内部完成。由于未公开源数据,因此我们进行此分析和处理的方式缺乏透明度。结果,任何第三方执行QA / QC,调整参数或进行细化的能力可能都非常有限。 匿名机密数据 一项任务涉及在用户提交的数据中通过姓名识别个人,同时考虑到错误和不一致之处。私人可能在一个地方被记录为“戴夫”,而在另一地方被记录为“大卫”,商业实体可以具有许多不同的缩写,并且总是有一些错别字。我已经基于许多标准开发了脚本,这些标准确定两条具有不同名称的记录何时代表同一个人,并为其分配一个通用ID。 此时,我们可以通过保留名称并将其替换为该个人ID号来使数据集匿名。但这意味着接收者几乎没有关于例如比赛强度的信息。我们希望能够传递尽可能多的信息而不会泄露身份。 什么不起作用 例如,在保留编辑距离的同时能够加密字符串将是很棒的。这样,第三方可以执行自己的一些QA / QC,或选择自己进行进一步的处理,而无需访问(或可能进行反向工程)PII。也许我们在内部将编辑距离<= 2的字符串匹配起来,接收者想看看收紧该公差以编辑距离<= 1的含义。 但是我所熟悉的唯一做到这一点的方法是ROT13(更一般地说,是任何移位密码),它几乎不算作加密。就像颠倒地写下名字,然后说:“保证您不会把纸翻过来吗?” 另一个不好的解决办法是简化所有内容。“艾伦·罗伯茨”变成“ ER”,依此类推。这是一个较差的解决方案,因为在某些情况下,姓名缩写与公共数据结合会透露一个人的身份,而在另一些情况下,则太含糊了;“本杰明·奥赛罗·埃姆斯”和“美国银行”将使用相同的首字母缩写,但名称不同。因此,它无法满足我们的任何需求。 另一个不错的选择是引入其他字段来跟踪名称的某些属性,例如: +-----+----+-------------------+-----------+--------+ | Row | ID | Name | WordChars | Origin | +-----+----+-------------------+-----------+--------+ | 1 | 17 | "AMELIA BEDELIA" | (6, 7) | Eng | +-----+----+-------------------+-----------+--------+ | 2 | 18 | …

7
整理数据的流程
通过对R的数据科学的有限了解,我意识到清除不良数据是准备数据进行分析的非常重要的一部分。 在处理数据之前,是否有任何最佳做法或流程来清理数据?如果是这样,是否有任何实现这些最佳实践的自动化或半自动化工具?
34 r  data-cleaning 

1
为什么xgboost比sklearn GradientBoostingClassifier快得多?
我正在尝试通过50个具有100个数字特征的示例训练一个梯度提升模型。XGBClassifier我的机器43秒内把手500棵树,而GradientBoostingClassifier只处理10棵(!)以1分2秒:(我没有理会试图种植500棵树,因为它会需要几个小时。我使用的是相同的learning_rate,并max_depth设置, 见下文。 是什么使XGBoost如此之快?它是否使用了sklearn家伙不知道的用于梯度增强的新颖实现方式?还是“偷工减料”并种植浅树? ps我知道这个讨论:https : //www.kaggle.com/c/higgs-boson/forums/t/10335/xgboost-post-competition-survey,但是那里找不到答案... XGBClassifier(base_score=0.5, colsample_bylevel=1, colsample_bytree=1, gamma=0, learning_rate=0.05, max_delta_step=0, max_depth=10, min_child_weight=1, missing=None, n_estimators=500, nthread=-1, objective='binary:logistic', reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=0, silent=True, subsample=1) GradientBoostingClassifier(init=None, learning_rate=0.05, loss='deviance', max_depth=10, max_features=None, max_leaf_nodes=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, n_estimators=10, presort='auto', random_state=None, subsample=1.0, verbose=0, warm_start=False)
29 scikit-learn  xgboost  gbm  data-mining  classification  data-cleaning  machine-learning  reinforcement-learning  data-mining  bigdata  dataset  nlp  language-model  stanford-nlp  machine-learning  neural-network  deep-learning  randomized-algorithms  machine-learning  beginner  career  xgboost  loss-function  neural-network  software-recommendation  naive-bayes-classifier  classification  scikit-learn  feature-selection  r  random-forest  cross-validation  data-mining  python  scikit-learn  random-forest  churn  python  clustering  k-means  machine-learning  nlp  sentiment-analysis  machine-learning  programming  python  scikit-learn  nltk  gensim  visualization  data  csv  neural-network  deep-learning  descriptive-statistics  machine-learning  supervised-learning  text-mining  orange  data  parameter-estimation  python  pandas  scraping  r  clustering  k-means  unsupervised-learning 


4
如何用元数据注释文本文档?
拥有大量文本文档(自然语言,非结构化),用一些语义元数据注释它们的可能方法是什么?例如,考虑一个简短的文档: I saw the company's manager last day. 为了能够从中提取信息,必须使用附加数据对其进行注释,以减少歧义。查找此类元数据的过程不成问题,因此假定它是手动完成的。问题是如何以一种可以更方便/有效地进行进一步分析的方式存储这些数据? 一种可能的方法是使用XML标记(请参见下文),但似乎太冗长了,也许有更好的方法/准则将这种元数据存储在文本文档中。 <Person name="John">I</Person> saw the <Organization name="ACME">company</Organization>'s manager <Time value="2014-5-29">last day</Time>.


1
删除给定文本中某个字符后的字符串
我有一个像下面这样的数据集。我想删除字符©之后的所有字符。如何在R中做到这一点? data_clean_phrase <- c("Copyright © The Society of Geomagnetism and Earth", "© 2013 Chinese National Committee ") data_clean_df <- as.data.frame(data_clean_phrase)
15 r  data-cleaning 

4
邮政地址模糊匹配怎么办?
我想知道当邮政地址的格式不同或其中一个拼写错误时如何匹配邮政地址。 到目前为止,我已经找到了不同的解决方案,但是我认为它们已经过时并且效率不高。我确信存在一些更好的方法,因此,如果您有供我阅读的参考文献,那么我相信这是一个可能使多个人感兴趣的主题。 我找到的解决方案(示例在R中): Levenshtein距离,它等于将一个单词转换为另一个单词时必须插入,删除或更改的字符数。 agrep("acusait", c("accusait", "abusait"), max = 2, value = TRUE) ## [1] "accusait" "abusait" 音素的比较 library(RecordLinkage) soundex(x<-c('accusait','acusait','abusait')) ## [1] "A223" "A223" "A123" 使用拼写校正器(最终是像Peter Norvig那样的贝叶斯校正器),但我猜它在地址上不是很有效。 我考虑过使用Google的建议,但同样,在个人邮政地址上效率也不高。 您可以想象使用机器学习监督方法,但是您需要存储用户拼写错误的请求,这对我来说不是一个选择。

5
现代R和/或Python库会使SQL过时吗?
我在办公室工作,其中SQL Server是我们所做的一切工作的骨干,从数据处理到清理再到处理。我的同事擅长编写复杂的功能和存储过程,以系统地处理传入的数据,以便可以对其进行标准化并将其用于报告,可视化和分析项目中。在这里开始之前,除了编写最基本的查询之外,我对SQL的了解很少。我的大部分分析准备工作都是在R中完成的。我的老板坚持说我提高了我的SQL技能,尽管似乎很少有分配工作无法更有效地完成,并且使用R编写的代码行少得多软件包,例如dplyr,data.table和tidyr(仅举几例)。我的问题是-这有意义吗? 几周前,我发现自己面临的任务是获取满足特定条件的表中每一行的列名列表,然后将它们连接成字符串向量。截止日期很紧,当时我遇到了一些障碍,无法完全解决这个问题。我问我的老板,后者又请我的同事编写脚本TSQL来解决问题。当他在研究它时,我想出了一种方法来用R编写一个相当简单的函数并将其应用于数据框。大约两个小时后,我的同事带着他的剧本回来了。至少有75行包含两个嵌套的for循环。我要求他告诉它何时完成运行,他说这需要几个小时。同时,我的R脚本能够在约30秒内循环遍历约45,000条记录。 我是否应该认为R是用于清理和处理数据的更好选择?也许我办公室里的SQL开发人员只是无能为力?我很好奇,是否同时使用R和SQL(或Python和SQL)的人对此有任何想法。
14 python  r  data-cleaning  data  sql 

1
将int的pandas列转换为timestamp数据类型
我有一个数据框,其中除其他外,包含一列自1970-1-1以来经过的毫秒数。我需要将此int列转换为时间戳数据,因此我可以通过将timestamp列系列添加到一个完全由1970-1-1组成的datetime值的序列中,最终将其转换为datetime数据列。 我知道如何将一系列字符串转换为日期时间数据(pandas.to_datetime),但是我找不到或想出任何解决方案将整列整数转换为日期时间数据或时间戳数据。

3
是否有适用于python的好的即用型语言模型?
我正在为一个应用程序制作原型,我需要一个语言模型来计算一些生成的句子的困惑度。 我可以随时使用经过训练的python语言模型吗?简单的东西 model = LanguageModel('en') p1 = model.perplexity('This is a well constructed sentence') p2 = model.perplexity('Bunny lamp robert junior pancake') assert p1 < p2 我看过一些框架,但找不到我想要的。我知道我可以使用类似: from nltk.model.ngram import NgramModel lm = NgramModel(3, brown.words(categories='news')) 这在Brown Corpus上使用了很好的图林概率分布,但是我正在一些大型数据集(例如1b单词数据集)上寻找精心设计的模型。我可以真正相信一般领域的结果(不仅是新闻)
11 python  nlp  language-model  r  statistics  linear-regression  machine-learning  classification  random-forest  xgboost  python  sampling  data-mining  orange  predictive-modeling  recommender-system  statistics  dimensionality-reduction  pca  machine-learning  python  deep-learning  keras  reinforcement-learning  neural-network  image-classification  r  dplyr  deep-learning  keras  tensorflow  lstm  dropout  machine-learning  sampling  categorical-data  data-imputation  machine-learning  deep-learning  machine-learning-model  dropout  deep-network  pandas  data-cleaning  data-science-model  aggregation  python  neural-network  reinforcement-learning  policy-gradients  r  dataframe  dataset  statistics  prediction  forecasting  r  k-means  python  scikit-learn  labels  python  orange  cloud-computing  machine-learning  neural-network  deep-learning  rnn  recurrent-neural-net  logistic-regression  missing-data  deep-learning  autoencoder  apache-hadoop  time-series  data  preprocessing  classification  predictive-modeling  time-series  machine-learning  python  feature-selection  autoencoder  deep-learning  keras  tensorflow  lstm  word-embeddings  predictive-modeling  prediction  machine-learning-model  machine-learning  classification  binary  theory  machine-learning  neural-network  time-series  lstm  rnn  neural-network  deep-learning  keras  tensorflow  convnet  computer-vision 

2
多少数据足以训练我的机器学习模型?
我从事机器学习和生物信息学研究已有一段时间了,今天我与一位同事就数据挖掘的主要一般问题进行了交谈。 我的同事(是机器学习专家)说,他认为,机器学习最重要的实践方面是如何理解您是否收集了足够的数据来训练机器学习模型。 这句话令我感到惊讶,因为我从未在这方面给予过如此重视。 然后,我在Internet上寻找了更多信息,并且根据经验,我在FastML.com上发现了这篇文章,根据您的经验,您需要的数据实例大约是功能的10倍。 两个问题: 1-这个问题在机器学习中真的特别重要吗? 2 - 是的10倍规则工作?这个主题还有其他相关资料吗?

3
最佳科学计算语言[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 似乎大多数语言都具有一定数量的科学计算库。 Python有 Scipy Rust 有 SciRust C++有几个包括ViennaCL和Armadillo Java具有Java Numerics和Colt其他几个 且不说像语言R和Julia明确的科学计算而设计。 有这么多种选择,您如何选择适合任务的最佳语言?另外,哪种语言的性能最高?Python并且R似乎在该领域具有最大的吸引力,但从逻辑上讲,编译语言似乎是一个更好的选择。会有什么表现胜过Fortran?此外编译语言往往有GPU加速,而解释性语言如R并Python没有。选择一种语言时应该考虑什么?哪些语言可以在效用和性能之间取得最佳平衡?还有我错过的具有重要科学计算资源的语言吗?
10 efficiency  statistics  tools  knowledge-base  machine-learning  neural-network  deep-learning  optimization  hyperparameter  machine-learning  time-series  categorical-data  logistic-regression  python  visualization  bigdata  efficiency  classification  binary  svm  random-forest  logistic-regression  data-mining  sql  experiments  bigdata  efficiency  performance  scalability  distributed  bigdata  nlp  statistics  education  knowledge-base  definitions  machine-learning  recommender-system  evaluation  efficiency  algorithms  parameter  efficiency  scalability  sql  statistics  visualization  knowledge-base  education  machine-learning  r  python  r  text-mining  sentiment-analysis  machine-learning  machine-learning  python  neural-network  statistics  reference-request  machine-learning  data-mining  python  classification  data-mining  bigdata  usecase  apache-hadoop  map-reduce  aws  education  feature-selection  machine-learning  machine-learning  sports  data-formats  hierarchical-data-format  bigdata  apache-hadoop  bigdata  apache-hadoop  python  visualization  knowledge-base  classification  confusion-matrix  accuracy  bigdata  apache-hadoop  bigdata  efficiency  apache-hadoop  distributed  machine-translation  nlp  metadata  data-cleaning  text-mining  python  pandas  machine-learning  python  pandas  scikit-learn  bigdata  machine-learning  databases  clustering  data-mining  recommender-system 

2
通过遍历pandas数据框中的行来创建新列
我有一个这样的熊猫数据框(X11):实际上我有99列,最高可达dx99 dx1 dx2 dx3 dx4 0 25041 40391 5856 0 1 25041 40391 25081 5856 2 25041 40391 42822 0 3 25061 40391 0 0 4 25041 40391 0 5856 5 40391 25002 5856 3569 我想为单元格值(例如25041、40391、5856等)创建其他列。因此,如果25041出现在任何dxs列中的特定行中,则将有一个值为250或1或0的列。我正在使用此代码,当行数较少时,它可以工作。 mat = X11.as_matrix(columns=None) values, counts = np.unique(mat.astype(str), return_counts=True) for x in values: X11[x] = …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.