首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >线性回归模型

线性回归模型
EN

Stack Overflow用户
提问于 2018-02-04 20:09:12
回答 1查看 289关注 0票数 3

下面是我用SGD实现的线性回归,但是得到的结果不是最好的fit.How,我能改进一下吗?

代码语言:javascript
复制
import matplotlib.pyplot as plt
from matplotlib import style
import numpy as np

style.use("fivethirtyeight")

x=[[1],[2],[3],[4],[5],[6],[7],[8],[9],[10]]
y=[[3],[5],[9],[9],[11],[13],[16],[17],[19],[21]]

X=np.array(x)
Y=np.array(y)

learning_rate=0.015


m=1
c=2
gues=[]

for i in range(len(x)):

    guess=m*x[i][0]+c
    error=guess-y[i][0]


    if error<0:

        m=m+abs(error)*x[i][0]*learning_rate
        c=c+abs(error)*learning_rate

    if error>0:

        m=m-abs(error)*x[i][0]*learning_rate
        c=c-abs(error)*learning_rate
    gues.append([guess])
t=np.array(gues)



plt.scatter(X,Y)
plt.plot(X,t)
plt.show()


from sklearn.linear_model import LinearRegression
var=LinearRegression()
var.fit(X,Y)
plt.scatter(X,Y)
plt.plot(X,var.predict(X))
plt.show()

因为我必须最小化误差,在对误差函数w.r.t对m求导时,误差是(猜测-y),所以x和w.r.t c给出一个常数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-04 21:04:02

你在做随机梯度下降,评估每个数据点的拟合。因此,最终的mc给出了拟合关系的参数。你绘制的这条线是拟合线的“演变”。

下面是我如何绘制它的,并对您的代码进行了一些其他调整,因为我知道您在做什么:

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt

X = np.array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
Y = np.array([ 3,  5,  9,  9, 11, 13, 16, 17, 19, 21])

learning_rate = 0.015
m = 1
c = 2

gues = []
for xi, yi in zip(X, Y):

    guess = m * xi + c
    error = guess - yi

    m = m - error * xi * learning_rate
    c = c - error * learning_rate

    gues.append(guess)

t = np.array(gues)

# Plot the modeled line.
y_hat = m * X + c
plt.figure(figsize=(10,5))
plt.plot(X, y_hat, c='red')

# Plot the data.
plt.scatter(X, Y)

# Plot the evolution of guesses.
plt.plot(X, t)
plt.show()

我在代码中创建的主要mod是:单步执行压缩的XY,这样您就可以在不索引它们的情况下使用then。为了简单起见,我还把它们做成了一维数组。如果你直接使用梯度,没有abs,你不需要在+ve和-ve情况下使用不同的路径。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48607884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档