用数字表示梯度下降中的线性回归特征
Represent Linear Regression features in Gradient Descent numerically
下面的 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']
在这种情况下,如何将这些特征映射到数值并应用梯度下降?
您可以将您的特征映射到您选择的数值,然后以通常的方式应用梯度下降。
在 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})
如您所见,这种方式可能会变得相当复杂,最好编写一段动态执行此操作的代码。
下面的 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']
在这种情况下,如何将这些特征映射到数值并应用梯度下降?
您可以将您的特征映射到您选择的数值,然后以通常的方式应用梯度下降。
在 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})
如您所见,这种方式可能会变得相当复杂,最好编写一段动态执行此操作的代码。