以前只是在Coursera上吴恩达的《Machine Learning》课时用Matlab写过线性回归的源代码,这些东西虽然在python中有现成的库可以调用,但为了练手,还是随便写了一个线性回归的源代码。逻辑回归原理和线性回归类似,不过要乘一个diag矩阵。数据集是课后作业中的.mat文件不过由于只是练手的缘故,并没有特别注意输入X的数据格式的问题,比如这里默认X的feature个数为1,。感觉numpy对矩阵操作还是不如Matlab方便
# coding=utf-8
# 版权所有,侵权不究
# typhoonbxq
# the University of Hong Kong
import scipy.io as scio
import numpy as np
import matplotlib.pyplot as plt
class LR:
def __init__(self,X,Y):
self.m = len(Y) # num of training examples
self.n = len(X[0]) + 1 # num of features, adding "1"
self.X = np.hstack((np.ones((self.m,1)),X)) # Add '1' to each training example
self.Y = Y.reshape((self.m,1))
self.theta = 0
self.cost = []
def fit(self):
theta &