KUO 发表于 2019-11-24 14:21:01

python机器学习课程01-单变量线性回归用python实现

机器学习最好的课程还是吴恩达老师的网易云机器学习课程,这个课程在网易云上是免费的,大家可以学习一下。原理讲的比较透彻,老师表述很条理,听起来也很简单。我准备接下来写的内容的主线也是根据该课程的内容来的,

      首先,学习一下线性回归。

      虽然线性回归在实际应用中比较少,但线性回归理解起来比较容易,可以让我们很轻松的了解机器学习的一些基本的概念,比如假设函数,损失函数,梯度下降等概念。

       吴恩达老师的课程推荐用matlab实现作业的编写,因为自己想学习python,所以我选择用python编写老师的作业。

一、线性回归的基本概念      

复习一下线性回归的一些基本概念,我这里只列举一下基本概念,详细的内容请参考吴恩达老师的网易云机器学习课程。

1.1 线性回归的假设函数
————————————————


1.2 代价函数1.3 梯度下降代入1.2中的公式,可得二、用python编写简单线性回归的思路1、加载数据集2、初始化theta3、计算成本函数的偏导数4、迭代三、简单线性回归的源代码
from numpy import mat, shape, ones, random,zeros
import matplotlib.pyplot as plt

def loadDataSet(filePath):
    dataMat = []
    labelMat = [] #分别定义一个数据集list和标签list
    fr = open(filePath) #打开文件输入流
    for line in fr.readlines(): #处理输入数据
      lineArr = line.strip().split(',') #按照空格分割每一行数据集 (x1 x2 x3 ...xn y)
      dataMat.append()])
      labelMat.append(float(lineArr)) #数据集中的真实值 y 这里需要根据自己的数据集进行修改索引位置

    return dataMat, labelMat

def gradDescent(X, y):
   
    X_Matrix = mat(X) # 将读取完的数据集X转化成 矩阵X
    y_Matrix = mat(y) #转置 y
    m,n= shape(X_Matrix) #m是数据集行数,n是特征的数量
    alpha = 0.01 #学习速率
    iterations = 1500 #最大迭代次数
    theta = zeros((n, 1)) #初始化特征参数 theta的值
    for k in range(iterations):
      error = X_Matrix * theta - y_Matrix # h(x) - y的值
      theta = theta - alpha * X_Matrix.transpose() * error/m # w =: w - a(h - y)x/m
#   print(error)
    return theta

#main 函数
if __name__ == '__main__':
   
    exciseDataPath = "/Users/hufan/Desktop/ex1data1.txt"
    X, y = loadDataSet(exciseDataPath)
    x = mat(X)[:,1]
    y = mat(y).reshape(-1,1)
    theta = gradDescent(X,y)
   
    slope = float(theta)
    print(slope)
    intercept = float(theta)
    print(intercept)

    xx = np.arange(1,40,1)
    yy = intercept + slope * xx
    plt.plot(x,y,'.')
    plt.plot(xx,yy,'--')
    plt.xlim(0,40)
    plt.ylim(-10,40)
    plt.show()




页: [1]
查看完整版本: python机器学习课程01-单变量线性回归用python实现