格式化词频并与其他数据机器结合学习python

2024-06-16 09:02:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我是机器学习算法的新手。我广泛阅读了scikit learn网站和其他的SO帖子,这些帖子引导我使用RandomForestClassifier和LinearSVC构建了我的第一个机器学习算法。在

我在写病历。患者每次住院都与并发症(出血、感染、心脏病发作等)对应的代码相关(或不相关)

利用这些注释,通过Countvectorizer和tfiddtransformer进行拟合和变换,可以准确地预测大部分代码。不过,我想在我的培训数据集中增加更多的数据:住院时间、手术次数、手术名称、ICU住院时间等等。。。在

在分析完web之后,我最终将所有的连续/二进制/缩放值添加到我的词频数组中。在

例如:[0,0,0.34,0,0.45,0, 2, 45](最后2个数字是添加的数据,而前两个数字匹配countvectorizer和tfdif.fit_变换(列车组)

然而,这似乎是一个庞大的数据组合的方式。在

我试图设置我的数据如下:[[0,0,0.34,0,0.45,0],[2],[45]],但它不起作用。在

我在网上搜索,但没有真正的线索,尽管我可能不是第一个面对这个问题的人…:p

谢谢你的帮助

编辑:

谢谢你详细而有价值的回答。我真的很感激。然而,0-1的确切范围是什么:它是{predict_proba}值(http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html#sklearn.ensemble.RandomForestClassifier.predict)吗?。我明白分数就是预测模型的准确性。那么当你根据每个变量得出所有的预测值时,你会平均所有预测值吗?最后,我要处理多个输出,我想这不是问题,因为我可以得到每个输出的预测(btw predict_proba(X)给我一个像[array([[0,1.]])、array([[0.2,0.8]])…]这样的数组,使用随机森林树分类器。我想其中一个数字是输出的概率,但我还没有研究过这个!)在


Tags: 数据代码算法机器时间数字数组scikit
2条回答

你的第一个解决方案就是在列表中添加内容,这是正确的解决方案。但是,你应该想想这意味着什么。如果你有100个单词并添加了两个附加功能,那么每个特定的单词将获得与添加的功能相同的“权重”-即,你添加的功能在模型中不会得到很强的处理。另外,您的意思是最后一个特征的值为45,是第四个特征值(0.45)的100倍。在

解决这个问题的一个常见方法是使用集合模型。与其将这些特性添加到单词列表中并进行预测,不如先使用单词构建一个预测模型。这一预测将在0-1范围内,并将捕捉到文章的“情绪”。然后,缩放其他变量(minmax scaler、normal distribution等)。最后,将单词的分数与最后两个标度变量结合起来,在一个列表上运行另一个预测,比如[.86,.2,.65]。这样,你就把所有的单词都转换成了一个情感得分,你可以用它作为一个特征。在

希望有帮助。在

根据以上更新编辑

是的,在这个例子中,你可以使用predict_proba,但是如果一切都正确缩放,并且你使用1/0作为类的目标,那么就不需要predict_proba。我们的想法是从单词中提取预测,并将其与其他变量结合起来。你不求预测的平均值,而是根据预测值做出预测!这就是所谓的集成学习。训练另一个模型,以你的预测输出为特征。下面是你需要做的事情的流程图。enter image description here

谢谢你的时间和你详细的回答。我想我明白了。简而言之:

  1. 根据单词进行预测,并针对训练集(t1)的每一包单词,抽出一个“情绪”
  2. 使用“情感”和“其他”值为每个训练集行创建一个新数组->新训练集(t2)
  3. 根据t2进行预测。在
  4. 对测试应用前面的步骤。在

还有一个问题!在

什么是“情感”价值?!对于每一包单词,我有一个稀疏矩阵(countvectorizer+tf_idf)。那么你如何计算情绪呢?在测试的其余部分中,是否再次运行测试的每一行?你的情绪是clf.预测(十) 价值?在

相关问题 更多 >