Azure机器学习 - python

时间:2015-10-29 09:13:28

标签: python azure machine-learning

我已经在python中为azure ML编写了一个算法,但是我没有让它运行。我是用Visual Studio(PTVS)编程的。我使用此代码获得与azure ML相同的条件:

def azureMLstartCondition():
    fileLocation = 'C:/Users/nissen/Desktop/SLR-Algrorithmus/Belgian376.csv'
    dataset = pd.DataFrame(pd.read_csv(fileLocation, error_bad_lines = False))
    azureml_main(dataset)

将给定的pandas数据帧转换为列表的My Code是:

def formData(dataset):

    listOfTransaction = dataset.values.tolist()

    cleanedList = []
    for transaction in listOfTransaction:
        itemList = []
        for item in transaction:
            if False ==  pd.isnull(item):
                itemList.append(item)
        cleanedList.append(itemList)

    return cleanedList

我的代码将其重新转换为pandas数据框:

def formToPandas(result):
    lastStep = pd.DataFrame(result)
    return lastStep

在Visual Studio中,一切都有效,但不是在azure ML中。同一问题的描述,但另一方面,你在这里找到:forum of azure ML

我想要实现的完整代码包含最多4维或更多的列表。 (列表列表....)但最后一个是列表,转换为pandas应该没问题。

我希望你能帮助我, 许多问候, peni4142

PS:请原谅我的英语不好请: - )

编辑: PPS:完整的代码,我在模块Python代码脚本中有:

import pandas as pd

def formToPandas(result):
    lastStep = pd.DataFrame(result)
    return lastStep

def formData(dataset):

    listOfTransaction = dataset.values.tolist()

    cleanedList = []
    for transaction in listOfTransaction:
        itemList = []
        for item in transaction:
            if False ==  pd.isnull(item):
                itemList.append(item)
        cleanedList.append(itemList)

    return cleanedList


def allocationPhase(dataframe1):
    formedData = (formData(dataframe1))
    return formedData

def azureml_main(dataframe1 = None, dataframe2 = None):
    formToPandas(allocationPhase(dataframe1))

也许这会有所帮助。 非常感谢您的帮助。 好的,如果我之前已经发现以这种方式实现代码,我之前会像这样分享它。 :D抱歉!

2 个答案:

答案 0 :(得分:0)

根据我的经验,该问题是由函数azureMLstartCondition从本地路径上的CSV文件加载数据集引起的。

在Azure ML上,应通过Python Storage SDK中的编程或使用MS Azure ML Studio中的Data Input and Output模块从Azure存储加载数据集。

所以我认为您需要首先将现有数据csv文件上传到Azure存储或Azure ML实验(请参阅https://azure.microsoft.com/en-us/documentation/articles/machine-learning-walkthrough-2-upload-data/)。

然后,您可以使用Python访问上传的数据集(请参阅https://azure.microsoft.com/en-us/documentation/articles/machine-learning-python-data-access/)并修改您的代码,使其适用于Azure ML。

要将数据导入Azure ML,您还可以参考https://azure.microsoft.com/en-us/documentation/articles/machine-learning-data-science-import-data/

  

更新了评论的错误信息

对于错误RPackage library exception: Failed to convert RObject to DataSet,有一个疑难解答博客http://blogs.msdn.com/b/andreasderuiter/archive/2015/02/03/troubleshooting-error-1000-rpackage-library-exception-failed-to-convert-robject-to-dataset-when-running-r-scripts-in-azure-ml.aspx可以解释并解析Azure ML。

答案 1 :(得分:0)

这确实有效:

def formData(dataset):

    listOfTransaction = list()
    listOfTransaction = dataset.values.tolist()
    cleanedList = []
    for transaction in listOfTransaction:
        itemList = []
        for item in transaction:
            if False ==  pd.isnull(item):
                itemList.append(item)
        cleanedList.append(itemList)

    return cleanedList

def formToPandas(result):
    return pd.DataFrame(result)

我想在错误的地方遇到问题。真正的问题是在Visual Studio中没有问题可以使这个(x / y)* 100,其中x比y小得多,但是在azureML中你得到0作为结果,除了你创建变量为x = 0.0。 / p>