Machine learning 如何为Julia中的流量模型提供字典

Machine learning 如何为Julia中的流量模型提供字典,machine-learning,julia,flux-machine-learning,Machine Learning,Julia,Flux Machine Learning,所以我有一个20000x4数据集,其中4列有字符串。第一个是描述,另外三个是类别,最后一个是我想预测的。我标记了第一列的每个单词,并将其保存在字典中,使用其各自的Int值,并将其他列更改为具有数值。现在我很难理解如何在流量模型中输入这些数据 根据文档,我必须使用“数据集合进行训练(通常是一组输入x和目标输出y)”。在本例中,它将数据x和y分开。但是我怎么能用一个字典加上两个数字列呢 编辑: 以下是我目前拥有的一个最简单的例子: using WordTokenizers using DataFra

所以我有一个20000x4数据集,其中4列有字符串。第一个是描述,另外三个是类别,最后一个是我想预测的。我标记了第一列的每个单词,并将其保存在字典中,使用其各自的Int值,并将其他列更改为具有数值。现在我很难理解如何在流量模型中输入这些数据

根据文档,我必须使用“数据集合进行训练(通常是一组输入x和目标输出y)”。在本例中,它将数据x和y分开。但是我怎么能用一个字典加上两个数字列呢

编辑:

以下是我目前拥有的一个最简单的例子:

using WordTokenizers
using DataFrames

dataframe = DataFrame(Description = ["It has pointy ears", "It has round ears"], Size = ["Big", "Small"], Color = ["Black", "Yellow"], Category = ["Dog", "Cat"])

dict_x = Dict{String, Int64}()
dict_y = Dict{String, Int64}()

function words_to_numbers(data, column, dict)
    i = 1
    for row in range(1, stop=size(data, 1))
        array_of_words = tokenize(data[row, column])
        for (index, word) in enumerate(array_of_words)
            if haskey(dict, word)
                continue
            else
                dict[word] = i
                i += 1
            end
        end
    end
end

function categories_to_numbers(data, column, dict)
    i = 1
    for row in range(1, stop=size(data, 1))
        if haskey(dict, data[row, column])
            continue
        else
            dict[data[row, column]] = i
            i += 1
        end
    end
end

words_to_numbers(dataframe, 1, dict_x)
categories_to_numbers(dataframe, 4, dict_y)
我想使用dict_x和dict_y作为通量模型的输入和输出考虑以下示例:

using DataFrames

df = DataFrame()
df.food = rand(["apple", "banana", "orange"], 20)

multiplier(fruit) = (1 + (0.1 * rand())) * (fruit == "apple" ? 95 : 
    fruit == "orange" ? 45 : 105)
foodtoken(f) = (fruit == "apple" ? 0 : fruit == "orange" ? 2 : 3)

df.calories = multiplier.(df.food)
foodtoken(f) = (fruit == "apple" ? 0 : fruit == "orange" ? 2 : 3)

fooddict = Dict(fruit => (fruit == "apple" ? 0 : fruit == "orange" ? 2 : 3)
    for fruit in df.food)
现在,我们可以将令牌数值添加到数据帧:

df.token = map(x -> fooddict[x], df.food)

println(df)
现在,您应该能够使用df.token作为输入,df.carries作为输出来运行预测

=========发布进一步代码后的附录:===========

对于修改后的示例,您只需要一个helper函数:

function colvalue(s, dict)
    total = 0
    for (k, v) in dict
        if occursin(k, s)
            total += 10^v
        end
    end
    total
end


words_to_numbers(dataframe, 1, dict_x)
categories_to_numbers(dataframe, 4, dict_y)

dataframe.descripval = map(x -> colvalue(x, dict_x), dataframe.Description)
dataframe.catval = map(x -> colvalue(x, dict_y), dataframe.Category)

println(dataframe)

您能否添加一个简短的示例,说明您的数据是什么样子的?我不确定我是否理解这一点。好的,现在添加了一个最小的例子谢谢你的回答,我会尽快测试它,并告诉你它是否有效,尽管它似乎应该有效