线性回归程序的问题

时间:2018-10-06 18:47:06

标签: python linear-regression

我正在尝试使用线性回归程序使用mnist数据集预测手写数字。每当我尝试运行它时,梯度下降功能通常都需要花费一些时间才能工作,并且需要很长时间才能达到正确的权重。在八个小时内,它已通过该功能550次,仍然存在很多错误。有人可以告诉我通常需要这么长时间还是我做错了什么。

import numpy as np
import pandas as pd

mnist = pd.read_csv('mnist_train.csv')[:4200]
x = np.array(mnist)[:4200,1:]
y = np.array(mnist)[:4200,0].reshape(4200,1)

#How many numbers in dataset
n = len(x)
#How many values in each number
n1 = len(x[0])

#sets all weights equal to 1
coef = np.array([1 for i in range(n1)])

epochs = 1000000000000
learning_rate = .000000000008999
for i in range(epochs):
    cur_y = sum(x*coef)
    error = y-cur_y
    #Calculates Gradient
    grad = (np.array([sum(sum([-2/n  * (error)* x[j,i] for j in range(n)])) for i in range(n1)]))
    #Updates Weights
    coef = (-learning_rate * grad) + coef
    print(i)
    print(sum(y-(x*coef)))

1 个答案:

答案 0 :(得分:1)

您的学习速度非常小。此外,784有很多维数可供线性回归处理,尤其是假设您要使用所有60,000个样本时。 SVM会更好,显然,CNN最好。

鉴于您的错误越来越小,我建议您提高学习率并使用随机梯度进行训练(从您的训练集中为每个时期而不是整个训练集获取随机批次)。