V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
amoy
V2EX  ›  问与答

萌新求问用什么做大数据处理比较好

  •  
  •   amoy · 2019-06-19 19:20:52 +08:00 · 2124 次点击
    这是一个创建于 1771 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景:小学期选的选修课,最后的大作业要做一些基础的大数据处理,比如老师会给一个英文文章摘要的训练集,让我们做分类,然后老师会用测试集去测试我们的结果,按准确率给分。 lz 不是学计算机的,有一个月的时间去做这个,每天至少有一个上午或下午的时间能去自学,求问用什么工具或语言能在一个月类做出比较好的结果,求求大噶指点一下方向。

    19 条回复    2019-07-11 18:47:09 +08:00
    CrabAss
        1
    CrabAss  
       2019-06-19 20:07:47 +08:00
    Anaconda + NumPy + PyTorch
    简单一点的话把 PyTorch 换成 sklearn 也行
    CrabAss
        2
    CrabAss  
       2019-06-19 20:10:33 +08:00
    如果是学生的话可以用 PyCharm Pro 作为 IDE 跟 Anaconda 搭配使用
    CrabAss
        3
    CrabAss  
       2019-06-19 20:14:54 +08:00   ❤️ 1
    如何快速选择合适的 estimator:
    https://scikit-learn.org/stable/_static/ml_map.png
    amoy
        4
    amoy  
    OP
       2019-06-19 20:36:50 +08:00
    我的表述
    @CrabAss 谢谢大佬的指点,因为真的是零基础,所以可能理解有偏差,我的理解是:Anaconda 是 python 的一个工具包,PyCharm Pro 是一个编译环境(刚查的)。先去熟悉 python 然后用 PyCharm Pro 写算法可以调用 Anaconda 的模块来做数据处理。请问大概是这个思路吗?
    amoy
        5
    amoy  
    OP
       2019-06-19 21:04:32 +08:00
    还有就是是否具有通用性?我自己写出来的代码自己运行的结果和最后我发给老师,老师运行的结果和我是否会一致?
    srlp
        6
    srlp  
       2019-06-19 21:14:30 +08:00 via iPhone   ❤️ 1
    1. anaconda 是一个发行版,别的不用管,安装这个完整版,并设置好 path 即可。
    2. pycharm 是开发环境,简单地说是你敲入代码的地方,记事本的超级升级版,非必需。如果你主要是机器学习开发,建议使用 jupyter notebook 来运行,或 /和 vscode 写代码。
    3. 抛弃算法本身的随机性,同一份代码,老师和你运行结果应该相差不大。
    4. 就你的描述而言,应该更偏向“机器学习”来形容,而不是“大数据处理”。
    0x000007b
        7
    0x000007b  
       2019-06-19 21:23:41 +08:00 via Android
    Sk learn 掉包侠,可以的
    amoy
        8
    amoy  
    OP
       2019-06-19 21:59:37 +08:00
    @srlp 真的谢谢各位的指导,老师上课只讲了文本自动分类,数据挖掘等入门理论知识,但没有讲实现的相关技术细节,之前只有 C 语言的基础,真的是拿到大作业也没有头绪和方向 /(ㄒoㄒ)/~~
    amoy
        9
    amoy  
    OP
       2019-06-19 22:06:08 +08:00
    我举的那个例子只是大作业其中的一种类型,一共有四类,最后是抽签来决定做哪个。
    还有一个是做数据挖掘的,老师有给医疗保险相关的训练集,找出其中存在医疗诈骗的行为,并可以预测测试集中的诈骗行为。目前只知道这两个题目。
    amoy
        10
    amoy  
    OP
       2019-06-19 22:09:56 +08:00
    有好心的大哥指出更像是机器学习。我自己暂时还不是能理解这些区别,我再去了解一下。
    CrabAss
        11
    CrabAss  
       2019-06-19 23:42:22 +08:00 via Android
    @amoy 你可以把 Anaconda 理解成加强版的 Python 环境,本质还是 Python。NumPy 是用来处理数据的 Python 库,从文件导入的数据必须转换成 NumPy 数组才能被进一步处理。sklearn/PyTorch 是负责机器学习的 Python 库,选择一个 estimator,然后导入数据进行训练,就可以生成一个预测模型。
    CrabAss
        12
    CrabAss  
       2019-06-19 23:49:08 +08:00 via Android
    @amoy 值得一提的是机器学习不等于神经网络,神经网络只是机器学习算法中的一种。如果你不想构建一个复杂的神经网络的话 sklearn 就够用了
    amoy
        13
    amoy  
    OP
       2019-06-20 12:36:12 +08:00
    @CrabAss 多谢兄台不吝赐教
    kcirtap
        14
    kcirtap  
       2019-06-20 18:37:58 +08:00 via iPhone
    这个不叫大数据,更接近机器学习 /自然语言处理。文本聚类的话,传统机器学习的贝叶斯或者深度学习都可以试试,调包就完事了 XD
    amoy
        15
    amoy  
    OP
       2019-06-21 09:56:41 +08:00
    @CrabAss
    大佬,这是我抽到的那个题目,可否帮忙看下之前您讲的那个思路是否还可用。多次叨扰,还请见谅。
    目标:
    建立机器学习模型来判断点播客户端播放过程中是否存在卡顿。
    模型的输入:
    特征:从网络传输过程中获取的各种特征信息。如 rtt-往返时延、rto-超时重传、mdev-网络波动情况、wnd-客户端接收窗口、cwnd-拥塞窗口等(共 35 个特征,必要时需进行特征选择)。
    模型的输出:
    类标:播放中是否卡顿( buffer|卡顿、play|正常播放)。
    模型衡量标准:
    准确率、召回率等指标。

    注:数据集为非平衡数据集,共约 300 万条数据,两类比大致 97:3 ( play:buffer ),可能由于特征不充分,样本存在交叉,较难提升准确率。
    CrabAss
        16
    CrabAss  
       2019-06-21 14:55:31 +08:00   ❤️ 1
    @amoy 可用,你可以重点看一下 3 楼那张图里的 classification 区域里涵盖的那些算法
    CrabAss
        17
    CrabAss  
       2019-06-21 14:58:36 +08:00   ❤️ 1
    @amoy 一个模型的准确率不仅跟选择的算法有关,也和算法参数和输入数据的预处理有关。题里提到了是非平衡数据集,所以要视情况对输入的数据进行筛选和标准化
    amoy
        18
    amoy  
    OP
       2019-07-11 17:54:15 +08:00
    @CrabAss 大佬,我又来打扰您了,我现在做到那个模型评估那里,其中有两个指标
    print('准确率:', accuracy_score(Y_test, y_pred))
    print('精确率:', precision_score(Y_test, y_pred))

    第一条可以运行出来,第二条会报错
    准确率: 0.900968992248062
    F:\anaconda\envs\scikit-learn\lib\site-packages\sklearn\metrics\classification.py:1243: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
    if pos_label not in present_labels:
    Traceback (most recent call last):
    File "F:/bigdata/scikit-learn/Dataset.py", line 97, in <module>
    print('正确率:', precision_score(Y_test, y_pred))
    File "F:\anaconda\envs\scikit-learn\lib\site-packages\sklearn\metrics\classification.py", line 1569, in precision_score
    sample_weight=sample_weight)
    File "F:\anaconda\envs\scikit-learn\lib\site-packages\sklearn\metrics\classification.py", line 1415, in precision_recall_fscore_support
    pos_label)
    File "F:\anaconda\envs\scikit-learn\lib\site-packages\sklearn\metrics\classification.py", line 1246, in _check_set_wise_labels
    "%r" % (pos_label, present_labels))
    ValueError: pos_label=1 is not a valid label: array(['buffer', 'play'], dtype='<U6')

    进程已结束,退出代码 1
    请问这是为什么?
    amoy
        19
    amoy  
    OP
       2019-07-11 18:47:09 +08:00
    在里面添加一个 average=None 参数就没有报错了,虽然不知其所以然
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2290 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 00:02 · PVG 08:02 · LAX 17:02 · JFK 20:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.