日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發布時間:2024/7/23 python 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python实现线性回归预测不用sklearn库_python – 为什么我的自定义线性回归模型不匹配sklearn?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我正在嘗試用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?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。