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