我正在尝试使用 Python 创建一个简单的线性模型,不使用任何库(除了numpy
)。
首先,它收敛得非常快。仅经过 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,3.299e+05
2400,3,3.69e+05
1416,2,2.32e+05
3000,4,5.399e+05
1985,4,2.999e+05
1534,3,3.149e+05
完整数据可在https://github.com/shamoons/linear-logistic-regression/blob/master/Housing.csv
我假设(a)我的梯度下降回归在某种程度上是错误的,或者(b)我没有sklearn正确使用。
2 不会为给定输入预测相同输出的任何其他原因?
相关分类