机器学习(一):线性回归_python
2016-10-30 22:00
302 查看
机器学习算法Python实现
(github地址:https://github.com/lawlite19/MachineLearning_Python
由于公式使用的是LaTex,解析使用的google的Chart API,所以显示有问题,可以移步github)一、线性回归
1、代价函数
其中:
下面就是要求出theta,使代价最小,即代表我们拟合出来的方程距离真实值最近
共有m条数据,其中
代表我们要拟合出来的方程到真实值距离的平方,平方的原因是因为可能有负值,正负可能会抵消
前面有系数2的原因是下面求梯度是对每个变量求偏导,2可以消去
实现代码:
# 计算代价函数 def computerCost(X,y,theta): m = len(y) J = 0 J = (np.transpose(X*theta-y))*(X*theta-y)/(2*m) #计算代价J return J
注意这里的X是真实数据前加了一列1,因为有theta(0)
2、梯度下降算法
代价函数对求偏导得到:
所以对theta的更新可以写为:
其中
为学习速率,控制梯度下降的速度,一般取0.01,0.03,0.1,0.3…..
实现代码
# 梯度下降算法 def gradientDescent(X,y,theta,alpha,num_iters): m = len(y) n = len(theta) temp = np.matrix(np.zeros((n,num_iters))) # 暂存每次迭代计算的theta,转化为矩阵形式 J_history = np.zeros((num_iters,1)) #记录每次迭代计算的代价值 for i in range(num_iters): # 遍历迭代次数 h = np.dot(X,theta) # 计算内积,matrix可以直接乘 temp[:,i] = theta - ((alpha/m)*(np.dot(np.transpose(X),h-y))) #梯度的计算 theta = temp[:,i] J_history[i] = computerCost(X,y,theta) #调用计算代价函数 print '.', return theta,J_history
3、均值归一化
目的是使数据都缩放到一个范围内,便于使用梯度下降算法其中
为所有此feture数据的平均值
可以是最大值-最小值,也可以是这个feature对应的数据的标准差
实现代码:
# 归一化feature def featureNormaliza(X): X_norm = np.array(X) #将X转化为numpy数组对象,才可以进行矩阵的运算 #定义所需变量 mu = np.zeros((1,X.shape[1])) sigma = np.zeros((1,X.shape[1])) mu = np.mean(X_norm,0) # 求每一列的平均值(0指定为列,1代表行) sigma = np.std(X_norm,0) # 求每一列的标准差 for i in range(X.shape[1]): # 遍历列 X_norm[:,i] = (X_norm[:,i]-mu[i])/sigma[i] # 归一化 return X_norm,mu,sigma
注意预测的时候也需要均值归一化数据
4、最终运行结果
代价随迭代次数的变化5、使用scikit-learn库中的线性模型实现
导入包from sklearn import linear_model from sklearn.preprocessing import StandardScaler #引入缩放的包
归一化
# 归一化操作 scaler = StandardScaler() scaler.fit(X) x_train = scaler.transform(X) x_test = scaler.transform(np.array([1650,3]))
线性模型拟合
# 线性模型拟合 model = linear_model.LinearRegression() model.fit(x_train, y)
预测
#预测结果 result = model.predict(x_test)
相关文章推荐
- 【Stanford|斯坦福-机器学习:线性回归-单特征梯度下降+动态图】python3实现
- Python机器学习实战--线性回归
- python实现机器学习之多元线性回归
- 机器学习-线性回归python简单实现
- 机器学习之线性回归:OLS 无偏估计及相关性python分析
- python机器学习案例系列教程——线性函数、线性回归
- 机器学习之线性回归 (Python SKLearn)
- 机器学习理论篇之线性回归(python实现)
- 机器学习入门学习笔记:(2.2)线性回归python程序实现
- 7.3多元线性回归--python机器学习
- [置顶] 【算法 机器学习】MATLAB、R、python三种编程语言实现简单线性回归算法比较
- 机器学习:线性回归与Python代码实现
- Python 机器学习系列之线性回归篇深度详细
- 机器学习python局部加权线性回归
- 机器学习之线性回归 Linear Regression(二)Python实现
- 机器学习之线性回归python实现
- python机器学习(二)线性回归
- [050]Python 机器学习系列之线性回归篇深度详细
- 7.4多元线性回归实例1--python机器学习
- 7.4多元线性回归实例1--python机器学习