导入数据并使用自定义python代码读取非csv/txt文件->图
你好,
我在学习RM的过程中,我有一个工作的python代码,我想编译和产生一个图形,但我有一个艰难的时间设置一切,并正确运行它。数据集是非文本的csv文件,所以我不能通过用户界面正常上传它,但可以使用一个名为nmrglue的python模块读取它。我已经将所有必要的文件移动到本地存储库中,并检查了Python的扩展名是否正确设置(它是最新的并且匹配的)。然而,它似乎并没有从类到类的导入中拾取,尽管我尝试了许多组合来附加输入/输出过程树。
我已经附上了原始的python脚本+相关文件使用,并希望如何正确导入它的视觉指令。
我只是需要帮助设置,但我认为我错过了一些明显的过程。
谢谢,
0
答案
你好,
我迅速调查了一下。我在哪里可以找到你的rm_main函数?
~马丁
德国多特蒙德
作为@mschmitz指出,要在RapidMiner中使用Python,您需要将其封装在一个函数中(参见下面的示例图像),并将Pandas作为默认值调用。我们需要Pandas来生成RM和Python之间的数据框。
你好,
我通过将我的“main”类重新标记为rm_main(data)来输入函数,但是我经常遇到空格错误,就像这样。
还有下一个输入:
导入nmrglue为ng
进口matplotlib。Pyplot为PLT
以pd方式导入熊猫
进口scipy.stats
导入numpy为np
进口操作系统
进口pylab
def rm_main(数据):
def负载(路径):
Dic, data = ng.file . broker .read_pdata(path)
Udic = ng. broker .guess_udic(dic,data)
对于udic[0].items()中的k:
打印(k)
[udic[n]["size"] for n in range(udic["ndim"])]
光谱=数据[:]
#将它们存储为float
CAR = float(udic[n][" CAR "])
SW = float(udic[n][" SW "])
OBS = float(udic[n][" OBS "])
Num_points = float(len(spectrum))
#需要将车除以车,得到载体的PPM
freq_max = (.5) /float(OBS/SW)+float(CAR/OBS);
freq_min = (5 - ((num_points-1) / num_points)) /浮动(奥林匹克广播服务公司/ SW) +浮动(汽车/观察);
Step = (freq_max-freq_min)/(num_points-1)
域= []
Spectrum_flip = []
对于range(len(spectrum))中的I:
domain.append (freq_min + i *步骤)
spectrum_flip.append(频谱(len(频谱)我))
返回域,spectrum_flip
从本质上讲,我想要完成的是运行我的python代码,将数据转换为可以利用RapidMiner的分析工具的可用矩阵。我可以通过组合所有Python函数将main, load, draw等所有模块组合到一个进程中,但我本质上只是希望程序在通过循环第一个'块'给出的import glob模块之后运行。
谢谢,
你好,
您需要返回pandas数据框,而不是列表。应该可以了。
~马丁
德国多特蒙德
你好,
我用熊猫代替了所有的列表推导。DataFrame和append()一起从原始代码中复制append()。然而,我仍然不断收到这个错误:
IndentationError:预计第13、17等行会出现缩进。
我已经剪掉了空白,几乎尝试了每次迭代下缩进的所有组合,但都无济于事。
嘿,
我猜您已经理解了主要概念,但是在提供可能的解决方案之前,让我重复一些内容来填补遗漏的信息。
使用“Execute Python”操作符,您可以在RapidMiner中执行Python代码。它访问在"Settings" -> "Preferences…"下指定的python版本。-> "Python脚本" -> "Python可执行文件路径"
定义使用的Python版本
在屏幕截图中找到使用安装在Windows下的Anaconda中的Python的示例路径规范。现在你可以在操作符中通过导入它们来访问为这个python版本安装的库,就像你以前在python中做的那样。
操作符中的Python代码使用4个空格作为一个缩进级别。因此,如果您收到缩进错误,请确保缩进等于所需缩进水平的4倍。例如,当我复制“rm_main”的代码时,它包含制表符和空格的混合物,以及仅由2个空格组成的缩进。一些编辑器(比如崇高例如)提供显示是否使用制表符或空格的选项。
处理完缩进错误后,确保形成一个合适的Pandas DataFrame对象。我查了“nmrglue”库和“fileio. broker”。Read_pdata”方法似乎已经返回了给定数据的字典。幸运的是,Pandas dataframe将其作为输入。因此,您可以直接从返回的对象中创建一个DataFrame。这样做还有一个好处,即从一开始就正确地命名列。
现在有了Pandas DataFrame实例,您可以在“rm_main”函数的返回语句中传递它。之后,“Execute python”运算符将DataFrame转换为示例集(用于RapidMiner管理矩阵数据)。您可以在操作符输出端口访问此示例集。返回的第一个DataFrame在最顶端的输出端口传递,依此类推。
这里有一些示例代码,你只需要调整路径到你想要读取的文件:
注:
编辑:
如果您使用的是Windows,请确保在提供路径时转义反斜杠。这意味着,您需要提供2个反斜杠,我将其添加到上面的代码示例中。
同样,我已经正确地设置了目录,代码没有RapidMiner就可以正常工作。我也使用Linux和我复制粘贴你的代码与脑海中的参数。我怀疑我可能不得不将所有类对象合并到一个块中。这行不通。我还使用编辑和崇高来跟踪缩进,并从内部删除了所有不必要的空格/制表符。
我必须将python文件移动到python安装所在的模块文件夹中吗?由于某些原因,它无法检测到按顺序向右附加到它的类。
无法解析脚本。
请检查您的Python脚本:导入错误:没有名为bin_spectrum的模块
Bin_spectrum是我的另一个类的名称,它有自己的一组要调用的函数。
您是否尝试将包含lib文件的文件夹添加到PYTHONPATH?
有一个环境变量(参考:pythonpath环境),用于查找python模块。为了让它识别脚本作为一个模块,你需要提供一个' __init__.py '文件。它可以为空,但必须位于要添加的文件夹内。
另一种选择是使用' setup.py '(参考:创建安装文件).这允许通过pip进行安装。如果您选择这个解决方案,您可能希望在安装过程中使用' -e '选项。它允许在python文件上连续工作,而不必一遍又一遍地重新安装模块。(可能的安装调用' pip install -e folder_containing_the_setup_py ')