数据获取与清洗:特征筛选及训练测试数据合并

需积分: 13 0 下载量 123 浏览量 更新于2024-11-12 收藏 3KB ZIP 举报
资源摘要信息:"获取和清洗数据是数据科学项目中的重要步骤,涉及到从原始数据源中提取有用信息、清洗和整理数据,以便用于分析和建模。本资源着重介绍如何使用R语言,通过编程脚本对两个原始数据集进行处理,具体包括子集化选择特定特征、合并数据以及标记数据的过程。" 知识点详述: 1. 数据获取与预处理: 在数据科学的工作流程中,首先需要从各种数据源中获取数据,这可能包括数据库、API、网站爬虫、文件导入等方式。获取数据之后,需要对数据进行预处理,确保数据的质量和格式适合后续的分析工作。 2. R语言应用: R语言是数据分析和统计计算中常用的编程语言,它拥有强大的数据处理和分析功能。R语言提供了大量包和函数,专门用于数据处理、统计分析、图形绘制等任务。 3. 数据集结构理解: 在处理数据之前,必须理解数据集的结构。这包括了解数据集中包含哪些变量(例如特征名称列表),变量的类型(如数值型、字符型等),以及数据集中行与列的对应关系。 4. 特征选择: 特征选择是指从原始数据集中选择出对模型建立最有价值的变量,这有助于提高模型的预测能力和减少计算成本。本资源中,特征选择的标准是名称中包含“mean”或“std”,即选取与均值(mean)和标准差(std)相关的特征。 5. 数据集子集化: 数据子集化是指从原始数据集中提取部分数据形成新的数据集。在这个过程中,可以按照特定的条件选择数据,例如本资源中所用到的条件是特征名称包含“mean”或“std”。 6. 数据合并: 在数据科学项目中,通常会有多个相关数据集需要合并以进行综合分析。R语言中的rbind函数可以用来按行合并两个数据框(data frame),使得它们拥有相同的列结构。 7. 数据框(data frame): 数据框是R语言中用于存储表格型数据的数据结构,它是一种二维的、由行和列组成的对象,类似于数据库中的表。数据框中的每列可以是不同的数据类型,如数值型、字符型等。 8. 标记与匹配: 在数据处理过程中,需要根据特定的规则对数据进行标记。在本资源中,标记指的是将正确的标签与特征的列进行匹配。这通常涉及对数据集中的特定变量进行识别和关联,确保数据的准确性和完整性。 9. 使用rbind合并数据: 在R语言中,rbind函数用于将两个或多个数据框按行合并。合并的前提条件是各个数据框具有相同的列,即它们拥有相同数量和顺序的列,以及兼容的数据类型。 10. 应用场景: 此资源描述的脚本处理流程常见于各种数据科学项目中,尤其是在准备训练机器学习模型之前。从多个数据源获取数据、清洗、子集化、合并以及标记数据都是准备数据的重要环节。 总结,本资源通过一个具体的例子,详细介绍了如何使用R语言来处理和整合来自不同数据集的数据。它涵盖了数据获取、预处理、特征选择、子集化、合并和标记等关键步骤。掌握这些知识点对于执行高效的数据分析和模型建立至关重要。

def aprioriGen(Lk, k): retList = [] lenLk = len(Lk) for i in range(lenLk): for j in range(i + 1, lenLk): # 两两组合遍历 L1 = list(Lk[i])[:k - 2] L2 = list(Lk[j])[:k - 2] L1.sort() L2.sort() if L1 == L2: # 前k-1项相等,则可相乘,这样可防止重复项出现 # 进行剪枝(a1为k项集中的一个元素,b为它的所有k-1项子集) a = Lk[i] | Lk[j] # a为frozenset()集合 a1 = list(a) b = [] # 遍历取出每一个元素,转换为set,依次从a1中剔除该元素,并加入到b中 for q in range(len(a1)): t = [a1[q]] tt = frozenset(set(a1) - set(t)) b.append(tt) t = 0 for w in b: # 当b(即所有k-1项子集)都是Lk(频繁的)的子集,则保留,否则删除。 if w in Lk: t += 1 if t == len(b): retList.append(b[0] | b[1]) return retList def apriori(dataSet, minSupport=0.2): # 前3条语句是对计算查找单个元素中的频繁项集 C1 = createC1(dataSet) D = list(map(set, dataSet)) # 使用list()转换为列表 L1, supportData = calSupport(D, C1, minSupport) L = [L1] # 加列表框,使得1项集为一个单独元素 k = 2 while (len(L[k - 2]) > 0): # 是否还有候选集 Ck = aprioriGen(L[k - 2], k) Lk, supK = scanD(D, Ck, minSupport) # scan DB to get Lk supportData.update(supK) # 把supk的键值对添加到supportData里 L.append(Lk) # L最后一个值为空集 k += 1 del L[-1] # 删除最后一个空集 return L, supportData # L为频繁项集,为一个列表,1,2,3项集分别为一个元素 # 生成集合的所有子集标注解释

2023-06-10 上传