我有一个包含 20 列和 785 行的 CSV 文件。每列的第 785 行是描述编码图像的标签。编码图像是3或5。所以 1-784 行是编码图像,第 785 行是命名图像的标签。
我加载了 CSV 文件3_5_small.csv并将标签与编码数据分离。
如您所见,这是数字3的图像。
现在,我决定使用逻辑回归从编码数据中预测图像。正如Andrew NG 在机器学习课程中所解释的那样,我使用了随机梯度下降法。但我不认为,我做对了。在遵循代码之前,这是我执行的步骤:
- Transformed
train_labels_3_5分别只包含3and5to1和to0。所以我想预测3. 如果输出概率 < 0.5,则为 5,> 0.5 为 3。 - 随机洗牌
train_data_3_5和train_labels_3_5到相同的程度。 - 随机生成
theta向量 theta将向量和X向量传递到hypothesis函数中- 更新了
theta向量。
这就是我所做的一切。这是我所做的代码。
train <- function(data, labels, alpha = 0.001) {
#browser()
#Initialize the theta vector
theta <- seq(from = 0, to = 1, length.out = nrow(data))
number_of_iterations = 10
for(noi in 1:number_of_iterations) {
for(i in seq(1:ncol(data))) {
x = as.vector(data[,i]) #Create a x vector
h = hypothesis(x, theta) #Call the hypothesis function to get the probability
y = labels[1,i]
theta <- theta - (alpha * ((h - y) * x))
}
}
return(theta)
}
但是在测试数据甚至训练数据上,这根本不能预测正确。我不知道我哪里出错了。我重新审视了算法,讲座,但无法弄清楚,我做错了什么。1无论我传递3还是5的向量,它总是预测!
