以数字方式表示梯度下降中的线性回归特征

时间:2015-11-10 13:32:12

标签: machine-learning linear-regression gradient-descent

下面的python代码可以很好地找到梯度下降:

def gradientDescent(x, y, theta, alpha, m, numIterations):
    xTrans = x.transpose()
    for i in range(0, numIterations):
        hypothesis = np.dot(x, theta)
        loss = hypothesis - y 
        cost = np.sum(loss ** 2) / (2 * m)
        print("Iteration %d | Cost: %f" % (i, cost))
        gradient = np.dot(xTrans, loss) / m 
        theta = theta - alpha * gradient
    return theta

这里,x = m * n(m =样本数据的数量,n =总要素)特征矩阵。

但是,如果我的功能是'2'电影的非数字(例如,导演和流派),那么我的特征矩阵可能如下所示:

['Peter Jackson', 'Action'
 Sergio Leone', 'Comedy']

在这种情况下,如何将这些特征映射到数值并应用梯度下降?

1 个答案:

答案 0 :(得分:1)

您可以将要素映射到您选择的数值,然后按常规方式应用渐变下降。

在python中你可以使用panda轻松完成:

import pandas as pd
df = pd.DataFrame(X, ['director', 'genre'])
df.director = df.director.map({'Peter Jackson': 0, 'Sergio Leone': 1})
df.genre = df.genre.map({'Action': 0, 'Comedy': 1})

正如您所看到的,这种方式可能会变得非常复杂,编写一段动态代码可能会更好。