线性回归

发布时间:2019-03-07 20:01:56编辑:auto阅读(2151)

    传送门:人工智能视频列表-尚学堂,点开任意一个之后会发现他们会提供系列课程整合到一起的百度网盘下载,包括视频+代码+资料,都是免费的

    这里:博客园小技巧我觉得这个很好玩,可以拿来用。

    对于机器学习、深度学习的什么介绍,百度吧,有很多,这里不说了,直接进入学习。

     

    线性回归是一种回归分析技术,回归分析本质上就是一个函数估计的问题(函数估计包括参数估计和非参数估计),就是找出因变量和自变量之间的因果关系。回归分析的因变量是应该是连续变量,若因变量为离散变量,则问题转化为分类问题,回归分析是一个有监督学习问题。线性其实就是一系列一次特征的线性组合,在二维空间中是一条直线,在三维空间中是一个平面,然后推广到n维空间,可以理解高维广义线性吧。线性回归实现和计算都比较简单,但是不能拟合非线性数据。

    下面是视频教程给出的两种实现方法:

     

    第一种方法:利用numpy使用常规等式的数学方法,类似解数学方程,并利用matplotlib标准库实现可视化。

    关于推导,有用到线代、统计、概率、微积分等方面的知识,其实大概了解下就OK,下面是代码:

     1 import numpy as np
     2 import matplotlib.pyplot as plt
     3 
     4 # 行X列=100x1,[0,1)区间,乘以2变成[0,2)区间
     5 X = 2 * np.random.rand(100, 1)
     6 # 人为设置真实的Y值,后面的是误差,真实的Y值嘛,标准正态分布又称为u分布,是以0为均值、以1为标准差的正态分布,可记为N(0,1),学概率论既视感
     7 y = 4 + 3 * X + np.random.randn(100, 1)
     8 # 整合X0和X1,拼接到一起了,打印出来看看,很好理解的,X0都是1啊
     9 X_b = np.c_[np.ones((100, 1)), X]
    10 print(X_b)
    11 
    12 # 常规等式法求解theta,T转置,dot点乘,以及剩下的那个求逆:np.linalg.inv(),这里theta就是那个参数,权重weights啥的
    13 theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)
    14 print(theta_best)
    15 
    16 # 创建个测试集
    17 X_new = np.array([[0], [2]])
    18 X_new_b = np.c_[(np.ones((2, 1))), X_new]
    19 print(X_new_b)
    20 y_predict = X_new_b.dot(theta_best)
    21 print(y_predict)
    22 
    23 plt.plot(X_new, y_predict, 'r-')    # 红色 线图
    24 plt.plot(X, y, 'b.')                # 蓝色 点图
    25 plt.axis([0, 2, 0, 15])             # x轴,y轴区间
    26 plt.show()

    想说个小技巧,选中调用的函数,快捷键crtl+B,或者单击右键,Go To,Declaration;就可以快速转到调用的函数那儿,注:我用的是Pycharm + Anaconda3.也可以用dir(),help(),.__doc__,查看帮助文档,不过都是英语的,如查看list的说明:

    print(dir(list))

    help(list)

    print(list.__doc__)

     

    第二种方法:使用sklearn框架,看着很简单呢。主要用到的是fit,predict,

    import numpy as np
    from sklearn.linear_model import LinearRegression
    # sklearn框架,lingear_model线性模型,简单吧 X
    = 2 * np.random.rand(100, 1) y = 4 + 3 * X + np.random.randn(100, 1) lin_reg = LinearRegression() lin_reg.fit(X, y) print(lin_reg.intercept_, lin_reg.coef_) X_new = np.array([[0], [2]]) print(lin_reg.predict(X_new))

    还有,我觉得动手写最重要,然后哪里不会找哪里,多看看相关的博客,总会用到的;而且博客很好玩,自己写下来可以随时再看,真的方便,也要多写写博客,完。

    哎,这个该放到哪一类呢?

    今天就是这些了,有些少,早上睡懒觉了,晚上有个考研讲座要去听(关于我们专业的,不是数学、英语,政治的),over

关键字