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

2019-06-19 19:20:52 +08:00
 amoy

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

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

注:数据集为非平衡数据集,共约 300 万条数据,两类比大致 97:3 ( play:buffer ),可能由于特征不充分,样本存在交叉,较难提升准确率。
CrabAss
2019-06-21 14:55:31 +08:00
@amoy 可用,你可以重点看一下 3 楼那张图里的 classification 区域里涵盖的那些算法
CrabAss
2019-06-21 14:58:36 +08:00
@amoy 一个模型的准确率不仅跟选择的算法有关,也和算法参数和输入数据的预处理有关。题里提到了是非平衡数据集,所以要视情况对输入的数据进行筛选和标准化
amoy
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
2019-07-11 18:47:09 +08:00
在里面添加一个 average=None 参数就没有报错了,虽然不知其所以然

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/575593

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX