opengl实现三维动画简单代码_实现简单线性回归(代码分享)

260684f2dc6667ea9a1d308a7cc629b6.png

这部分是与bilibili上的视频对应的:

https://www.bilibili.com/video/BV1hz4y1f7bg/

应有些网友朋友的要求,放一下源码:

from keras.datasets import boston_housing
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_score
from matplotlib import pyplot
from sklearn.preprocessing import StandardScaler
import numpy as np

# 1、load data
(X_train, y_train), (X_test, y_test) = boston_housing.load_data(test_split=0.1)

# 2、preprocess data
# pyplot.plot(X_train)
# pyplot.show()

ss_X = StandardScaler()
X_train = ss_X.fit_transform(X_train)
X_test = ss_X.transform(X_test)

# pyplot.plot(X_train)
# pyplot.show()

ss_y = StandardScaler()
y_train = ss_y.fit_transform(y_train.reshape(-1,1))
y_test = ss_y.transform(y_test.reshape(-1,1))

#3、model train
# model = LinearRegression()
# model.fit(X_train,y_train)
dimension = 13 + 1
w = np.zeros([dimension, 1])
X_train = np.concatenate((np.ones([len(X_train), 1]), X_train), axis = 1).astype(float)
learning_rate = 0.0001
iter_time = 100

losslist = []
for t in range(iter_time):
    loss = np.sqrt(np.sum(np.power(np.dot(X_train, w) - y_train, 2))/len(X_train))#rmse
    losslist.append(loss)
    if(t%1==0):
        print(str(t) + ":" + str(loss))
    gradient = 2 * np.dot(X_train.transpose(), np.dot(X_train, w) - y_train) #dim*1
    w = w - learning_rate * gradient

np.save('weight.npy', w)

# pyplot.plot(losslist)
# pyplot.show()

#4、model predict
# y_predict  = model.predict(X_test)
X_test = np.concatenate((np.ones([len(X_test), 1]), X_test), axis = 1).astype(float)
w = np.load('weight.npy')
y_predict = np.dot(X_test, w)


#5、model evaluation
print("model mean squared error is " + str(mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(y_predict))))
print("model mean absolute error is " + str(mean_absolute_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(y_predict))))
print("model r2 score is " + str(r2_score(ss_y.inverse_transform(y_test),ss_y.inverse_transform(y_predict))))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值