我正在上一些 AI 类(class),并了解了一些我想试验的基本算法。我已经通过 Kaggle 访问了包含大量真实世界数据的多个数据集。 ,举办数据分析比赛。
我曾尝试参加多项比赛以提高我的机器学习技能,但一直无法找到一种在我的代码中访问数据的好方法。 Kaggle 以 csv 格式为每个比赛提供一个大数据文件,50-200mb。
在我的代码中加载和使用这些表的最佳方式是什么?我的第一直觉是使用数据库,所以我尝试将 csv 加载到单个数据库的 sqlite 中,但这给我的计算机带来了巨大的负载,并且在提交期间,我的计算机经常崩溃。接下来,我尝试在共享主机上使用 mysql 服务器,但是在它上面进行查询需要很长时间,这让我的分析代码非常慢。另外,恐怕我会超出我的带宽。
到目前为止,在我的类(class)中,我的讲师通常会清理数据并为我们提供可以完全加载到 RAM 中的可管理数据集。显然这对于我目前的兴趣是不可能的。请建议我应该如何进行。我目前使用的是 4 年前的 macbook,配备 4gb 内存和双核 2.1Ghz cpu。
顺便说一下,我希望用 Python 进行大部分分析,因为我最了解这种语言。我想要一个允许我用这种语言完成所有或几乎所有编码的解决方案。
最佳答案
原型(prototype)——这是处理大数据时最重要的事情。明智地将其拆分,以便您可以将其加载到内存中以使用解释器(例如 Python、R)访问它。这是大规模创建和优化分析流程的最佳方式。
换句话说,修剪您的数 GB 大小的数据文件,使它们足够小以执行命令行分析。
这是我用来执行此操作的工作流程——当然不是最好的方法,但它是一种方法,并且有效:
I. 使用延迟加载 方法(希望)在您的语言中可用 选择读取大数据文件,尤其是超过 1 GB 的文件。我 然后会建议根据 我在下面讨论的技术,然后最终将其完全存储 数据集市或中间暂存容器中的预处理数据。
一个使用 Python 延迟加载大型数据文件的示例:
# 'filename' is the full path name for a data file whose size
# exceeds the memory on the box it resides. #
import tokenize
data_reader = open(some_filename, 'r')
tokens = tokenize.generate_tokens(reader)
tokens.next() # returns a single line from the large data file.
II. 美白和重铸:
重铸你的列存储分类 变量(例如,男性/女性)作为整数(例如,-1、1)。维持 一个 查找表(与您用于此转换的散列相同 除了 键和值被换出)以转换这些整数 背部 将人类可读的字符串标签作为分析的最后一步 工作流程;
白化您的数据——即“标准化”列
保持连续数据。这两个步骤将大大
减少
数据集的大小——不引入任何噪音。一个
美白带来的好处是防止分析
错误
过重引起的。
III. 采样:纵向修剪数据。
IV。 降维:正交模拟采样。识别对因变量(又名“结果”或响应变量)没有影响或影响微乎其微的变量(列/字段/特征),并将它们从工作数据立方体中消除。
主成分分析 (PCA) 是一种简单而可靠的技术:
import numpy as NP
from scipy import linalg as LA
D = NP.random.randn(8, 5) # a simulated data set
# calculate the covariance matrix: #
R = NP.corrcoef(D, rowvar=1)
# calculate the eigenvalues of the covariance matrix: #
eigval, eigvec = NP.eig(R)
# sort them in descending order: #
egval = NP.sort(egval)[::-1]
# make a value-proportion table #
cs = NP.cumsum(egval)/NP.sum(egval)
print("{0}\t{1}".format('eigenvalue', 'var proportion'))
for i in range(len(egval)) :
print("{0:.2f}\t\t{1:.2f}".format(egval[i], cs[i]))
eigenvalue var proportion
2.22 0.44
1.81 0.81
0.67 0.94
0.23 0.99
0.06 1.00
如您所见,前三个特征值占原始数据中观察到的方差的 94%。根据您的目的,您通常可以通过删除最后两列来修剪原始数据矩阵 D:
D = D[:,:-2]
V. 数据集市存储:在永久存储(数据仓库)和分析流程之间插入一层。换句话说,严重依赖数据集市/数据立方体——位于数据仓库和分析应用程序层之间的“暂存区”。这个数据集市是您的分析应用程序更好的 IO 层。 R 的“数据框”或“数据表”(来自同名的 CRAN 包)是不错的选择。我还强烈推荐 Redis——超快的读取速度、简洁的语义和零配置,使其成为此用例的绝佳选择。 redis 将轻松处理您在问题中提到的大小的数据集。例如使用redis中的哈希数据结构,你可以拥有与MySQL或SQLite相同的结构和相同的关系灵 active ,而无需繁琐的配置。另一个优势:与 SQLite 不同,redis 实际上是一个数据库服务器。我实际上是 SQLite 的忠实粉丝,但我相信由于我刚才给出的原因,redis 在这里工作得更好。
from redis import Redis
r0 = Redis(db=0)
r0.hmset(user_id : "100143321, {sex : 'M', status : 'registered_user',
traffic_source : 'affiliate', page_views_per_session : 17,
total_purchases : 28.15})
关于python - 在非 super 计算机上处理大量数据的一般技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7114849/
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------