我正在尝试用Python创建一个简单的线性模型,不使用库(numpy除外).这就是我所拥有的

import numpy as np

import pandas

np.random.seed(1)

alpha = 0.1

def h(x,w):

return np.dot(w.T,x)

def cost(X,W,Y):

totalCost = 0

for i in range(47):

diff = h(X[i],W) - Y[i]

squared = diff * diff

totalCost += squared

return totalCost / 2

housing_data = np.loadtxt('Housing.csv',delimiter=',')

x1 = housing_data[:,0]

x2 = housing_data[:,1]

y = housing_data[:,2]

avgX1 = np.mean(x1)

stdX1 = np.std(x1)

normX1 = (x1 - avgX1) / stdX1

print('avgX1',avgX1)

print('stdX1',stdX1)

avgX2 = np.mean(x2)

stdX2 = np.std(x2)

normX2 = (x2 - avgX2) / stdX2

print('avgX2',avgX2)

print('stdX2',stdX2)

normalizedX = np.ones((47,3))

normalizedX[:,1] = normX1

normalizedX[:,2] = normX2

np.savetxt('normalizedX.csv',normalizedX)

weights = np.ones((3,))

for boom in range(100):

currentCost = cost(normalizedX,weights,y)

if boom % 1 == 0:

print(boom,'iteration',weights[0],weights[1],weights[2])

print('Cost',currentCost)

for i in range(47):

errorDiff = h(normalizedX[i],weights) - y[i]

weights[0] = weights[0] - alpha * (errorDiff) * normalizedX[i][0]

weights[1] = weights[1] - alpha * (errorDiff) * normalizedX[i][1]

weights[2] = weights[2] - alpha * (errorDiff) * normalizedX[i][2]

print(weights)

predictedX = [1,(2100 - avgX1) / stdX1,(3 - avgX2) / stdX2]

firstPrediction = np.array(predictedX)

print('firstPrediction',firstPrediction)

firstPrediction = h(firstPrediction,weights)

print(firstPrediction)

首先,它很快收敛.仅经过14次迭代.其次,它给出了与sklearn的线性回归不同的结果.作为参考,我的sklearn代码是:

import numpy

import matplotlib.pyplot as plot

import pandas

import sklearn

from sklearn.model_selection import train_test_split

from sklearn.linear_model import LinearRegression

dataset = pandas.read_csv('Housing.csv',header=None)

x = dataset.iloc[:,:-1].values

y = dataset.iloc[:,2].values

linearRegressor = LinearRegression()

xnorm = sklearn.preprocessing.scale(x)

scaleCoef = sklearn.preprocessing.StandardScaler().fit(x)

mean = scaleCoef.mean_

std = numpy.sqrt(scaleCoef.var_)

print('stf')

print(std)

stuff = linearRegressor.fit(xnorm,y)

predictedX = [[(2100 - mean[0]) / std[0],(3 - mean[1]) / std[1]]]

yPrediction = linearRegressor.predict(predictedX)

print('predictedX',predictedX)

print('predict',yPrediction)

print(stuff.coef_,stuff.intercept_)

我的自定义模型预测为y值为337,000,sklearn预测为355,000.我的数据是47行,看起来像

2104,3,3.999e+05

1600,3.299e+05

2400,3.69e+05

1416,2,2.32e+05

3000,4,5.399e+05

1985,2.999e+05

1534,3.149e+05

我假设(a)我的梯度下降回归在某种程度上是错误的或(b)我没有正确地使用sklearn.

为什么2不会为给定输入预测相同输出的任何其他原因?

python实现线性回归预测不用sklearn库_python – 为什么我的自定义线性回归模型不匹配sklearn?...相关推荐

  1. python好用的内置库_Python开发哪些库好?老男孩Python学习班

    近年来,伴随着人工智能时代的到来,也促使Python编程语言发展,因此Python成为公认的人工智能编程语言.之所以Python受欢迎,得益于其内置大量的库,那么Python开发有哪些基本库呢?这六大 ...

  2. python实现线性回归预测_机器学习实战笔记(Python实现)-08-线性回归

    --------------------------------------------------------------------------------------- 本系列文章为<机器 ...

  3. python什么模块动态调用链接库_Python调用C/C++动态链接库的方法详解

    本文以实例讲解了Python调用C/C++ DLL动态链接库的方法,具体示例如下: 示例一: 首先,在创建一个DLL工程(本例创建环境为VS 2005),头文件: 1 2 3 4 5 6 7 8 9 ...

  4. python中读写excel的扩展库_Python读写Excel文件第三方库汇总,你想要的都在这儿!...

    常见库简介 xlrd xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件. http://xlrd.readthedocs.io/en/latest/ 1.xlrd ...

  5. python文件读写用到的库_python 读写txt文件并用jieba库进行中文分词

    python用来批量处理一些数据的第一步吧. 对于我这样的的萌新.这是第一步. #encoding=utf-8 file='test.txt'fn=open(file,"r")pr ...

  6. python什么模块动态调用链接库_python如何调用扩展模块

    楔子 我们知道python的执行效率不是很高,而且由于GIL的原因,导致python不能充分利用多核CPU.一般的解决方式是使用多进程,但是多进程开销比较大,而且进程之间的通信也会比较麻烦.因此在解决 ...

  7. python文件读写用到的库_Python使用pyshp库读取shapefile信息的方法

    通过pyshp库,可以读写shapefile文件,查询相关信息,github地址为 import shapefile # 使用pyshp库 file = shapefile.reader(" ...

  8. python中文转拼音不用第三方库_又一个奇葩要求,Python是如何将“中文”转“拼音”的?...

    作者:黄同学 这年头什么样子的需求都会出现,下面这张图就是很好的体现了. 这就是说为啥要你学学Python啦!保不准你的领导会有各种奇葩需求,对于像Python这样的"万金油"编程 ...

  9. python网络爬虫方向的第三方库_Python网络爬虫中常用第三方库总结

    python对于爬虫的编写已经是相当的友好了,不过除了利用requests库或者scrapy框架之外,有一些库还需要我们知道,以便于我们更熟练.便捷的完成目标数据的爬取,接下来我就总结一下我认为在爬虫 ...

最新文章

  1. 关于持续集成几点知识点
  2. 【IT资讯】继哈工大Matlab软件被美禁用后,华为、360再遭Docker软件禁令
  3. Visual Studio 竖向选择功能
  4. c++代码根据点位连线_邹军:数控车倒角C与自动倒圆角R编程方法
  5. Thrift 个人实战--Thrift 网络服务模型
  6. GAN 生成对抗网络论文阅读路线图
  7. 企业管理器控制台本地无法访问
  8. python类基础知识
  9. 使用PowerShell 导出Exchange中的用户中用户信息到Office 365
  10. Excel导出xml
  11. 十分钟django后台 simpleui -含自定义后台首页
  12. 招商银行软件开发笔试知识汇总
  13. windows live messenger 80072eff
  14. Java中输入一个整数n,实现n的阶乘
  15. 使用pytorch自己从头搭建一个Lenet分类器网络及其训练、检测脚本
  16. java奈奈老师2_【图片】奥尔三X作【新任女教师奈奈、同居俏佳人、同居俏女仆】攻略&结局【javagame吧】_百度贴吧...
  17. 湖北师范大学----操作系统实训(c语言)
  18. [读书笔记]增长黑客:创业公司的用户与收入增长秘籍
  19. hive删除表或表信息出现的问题
  20. ZYNQ学习之路16.SDSoC开发环境介绍

热门文章

  1. Linux 应用程序 网络通讯函数记录
  2. 【计算机网络复习 数据链路层】3.4.4 选择重传协议(SR)
  3. 7-4 最短工期 (25 分)
  4. 【剑指offer】面试题05:替换空格(java)
  5. MVC与三层架构的联系及三层架构实现学生注册功能
  6. mybatis mysql5.7_spring boot整合ES+mysql5.7+mybatis+iview个人博客系统
  7. 分数怎么在计算机上关,电脑如何在注册表上关闭AutoRun功能
  8. 机器学习中防止过拟合的方法总结
  9. MFC空间几何变换之图像平移、镜像、旋转、缩放
  10. Java消息服务~@JmsListener集成