python 线性回归 优化_python – 线性回归实现总是比sklearn更糟糕
我在python中实现了梯度下降的线性回归.为了了解它的表现如何,我将它与scikit-learn的LinearRegression()类进行了比较.出于某种原因,sklearn总是比MSE平均表现优于我的程序(我使用Boston Housing数据集进行测试).我知道我目前没有进行梯度检查以检查收敛,但我允许进行多次迭代并将学习率设置得足够低,以便它应该收敛.我的学习算法实现中有没有明显的错误?这是我的代码:
import numpy as np
from sklearn.linear_model import LinearRegression
def getWeights(x):
lenWeights = len(x[1,:]);
weights = np.random.rand(lenWeights)
bias = np.random.random();
return weights,bias
def train(x,y,weights,bias,maxIter):
converged = False;
iterations = 1;
m = len(x);
alpha = 0.001;
while not converged:
for i in range(len(x)):
# Dot product of weights and training sample
hypothesis = np.dot(x[i,:], weights) + bias;
# Calculate gradient
error = hypothesis - y[i];
grad = (alpha * 1/m) * ( error * x[i,:] );
# Update weights and bias
weights = weights - grad;
bias = bias - alpha * error;
iterations = iterations + 1;
if iterations > maxIter:
converged = True;
break
return weights, bias
def predict(x, weights, bias):
return np.dot(x,weights) + bias
if __name__ == '__main__':
data = np.loadtxt('housing.txt');
x = data[:,:-1];
y = data[:,-1];
for i in range(len(x[1,:])):
x[:,i] = ( (x[:,i] - np.min(x[:,i])) / (np.max(x[:,i]) - np.min(x[:,i])) );
initialWeights,initialBias = getWeights(x);
weights,bias = train(x,y,initialWeights,initialBias,55000);
pred = predict(x, weights,bias);
MSE = np.mean(abs(pred - y));
print "This Program MSE: " + str(MSE)
sklearnModel = LinearRegression();
sklearnModel = sklearnModel.fit(x,y);
sklearnModel = sklearnModel.predict(x);
skMSE = np.mean(abs(sklearnModel - y));
print "Sklearn MSE: " + str(skMSE)
解决方法:
首先,确保您正在计算正确的目标函数值.线性回归目标应该是.5 * np.mean((pred-y)** 2),而不是np.mean(abs(pred – y)).
您实际上正在运行随机梯度下降(SGD)算法(对各个示例运行梯度迭代),这应该与“梯度下降”区分开来.
要使SGD收敛,必须限制学习率.通常,学习速率设置为基本学习速率除以迭代次数,如alpha /(迭代1),使用代码中的变量.
您还在渐变中包含1 / m的倍数,这通常不用于SGD更新.
要测试您的SGD实现,而不是评估您使用的数据集上的错误,请将数据集拆分为训练集和测试集,并在使用这两种方法进行训练后评估此测试集上的错误.训练/测试集拆分将允许您将算法的性能估计为学习算法(估计预期误差)而不是作为优化算法(最小化经验误差).
标签:python,machine-learning,scikit-learn,linear-regression
来源: https://codeday.me/bug/20190612/1226365.html
python 线性回归 优化_python – 线性回归实现总是比sklearn更糟糕相关推荐
- python linux 优化_Python 代码性能优化技巧
Python 性能优化除了改进算法,选用合适的数据结构之外,还有几种关键的技术,比如将关键 python 代码部分重写成 C 扩展模块,或者选用在性能上更为优化的解释器等,这些在本文中统称为优化工具. ...
- python线性回归实例_python 线性回归示例
说明:此文的第一部分参考了这里 用python进行线性回归分析非常方便,有现成的库可以使用比如:numpy.linalog.lstsq例子.scipy.stats.linregress例子.panda ...
- python回归分析实验_python线性回归实验
实验 算法 python 线性回归实验 [实验名称] Python 线性回归实验 [实验要求] 掌握 Python 线性回归模型应用过程,根据模型要求进行数据预处理,建模,评价与应用: [背景描述] ...
- python线性回归实例_python线性回归示例
版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/haluoluo211/article/details/78761466 下面给出sklearn 库线性 ...
- python mse函数_Python 线性回归处理糖尿病数据 计算MSE等
import pandas as pd import seaborn as sns from math import sqrt import matplotlib.pyplot as plt from ...
- python 框架 优化_python+unittest框架第六天unittest之优化测试报告
今天的内容主要是,用第三方的HTMLRUNner 第三方的报告来优化之前第五天批量执行案例的测试报告.案例的部分看第五天的批量执行笔记~ HTMLRUNner他可以生成更美观的测试报告,基于前辈造的车 ...
- python 内存优化_Python 黑魔法之内存优化
本文字数:2634 字 阅读本文大概需要:7 分钟 写在之前 围绕类的话题,说是说不完的,仅在特殊方法,除了我们在前面遇到过的 __init__(),__new__(),__str__() 等之外还有 ...
- python网页优化_python大佬养成计划----JavaScript对html的优化
切换图片 当我们浏览网页时,时常出现图片轮播场景.实现用鼠标点击'下一页'时,更换图片的功能. #当前目录下建立img目录,存放图片,图片命名格式'img1.jpg' 图片切换 #snow_maps{ ...
- python数据库优化_Python学习(二十九)—— pymysql操作数据库优化
转载自:http://www.cnblogs.com/liwenzhou/articles/8283687.html 我们之前使用pymysql操作数据库的操作都是写死在视图函数中的,并且很多都是重复 ...
最新文章
- Ethereal使用入门
- Freescale 车身控制模块(BCM) 解决方案
- Sharding-JDBC(二)2.0.3版本实践
- python flask 大文件 下载_flask - python上传大文件到服务器报错
- int?id与id??1 的意思
- Oracle HA 之 OGG部署流水
- 在 Linux shell 中自由操作时间变量
- return 0在c语言中是什么意思_单次T+0与蓝筹股试点T+0制度是什么意思,两者有何区别?...
- HCL_路由器_OSPF配置
- 傅里叶变换及拉普拉斯变换直观理解总结
- 一套基于java的开源车牌识别算法
- 数据结构习题及解析三
- php 商户转账到微信零钱
- 何恺明的ResNet引用量突破10万!
- (原创文章)羊毛党何去何从
- 体系 英文缩写是(D)
- 【渝粤题库】广东开放大学 文化服务营销管理 形成性考核 (2)
- springboot启动错误 Could not resolve placeholder
- 传人保助贷险部门大地震 去年信保承保净亏损29亿
- Linux中的timedatectl时间设置及ntp时间同步服务搭建
热门文章
- 自定义SAP Spartacus的产品搜索API参数 - Product Search
- Spring JDBC 框架一个最简单的Hello World级别的例子
- ABAP内表在ABAP 740后支持的filter操作
- 一种JavaScript里小数的精确计算方式
- 编程语言里函数方法类型检查的重要性
- 使用cf curl查看SAP云平台上的应用各项明细
- SAP CRM,C4C和Hybris的product Cockpit
- git stash命令的用法
- How is OData selected implemented
- variable not availabe in Chrome debugger