资源简介
神经网络拟合曲线
代码片段和文件信息
import numpy as np
import matplotlib.pyplot as plt
from multiprocessing import Process Lock Array
import time
def load_data(filename):
“““载入数据。“““
xys = []
with open(filename ‘r‘) as f:
for line in f:
xys.append(map(float line.strip().split()))
xs ys = zip(*xys)
return np.asarray(xs) np.asarray(ys)
def identity_basis(x):
ret = np.expand_dims(x axis=1)
return ret
def gaussian_basis(x feature_num=20):
‘‘‘高斯基函数‘‘‘
#==========
#todo ‘‘‘请实现高斯基函数‘‘‘
ret_x = np.expand_dims(x axis=1)
max_x = np.max(x)
min_x = np.min(x)
line_number = ret_x.shape[0]
l = (max_x-min_x)/19
u = np.zeros((line_number20)dtype=float)
for j in range (020):
u[:j] = min_x+l*j
ret = np.zeros((line_number20)dtype=float)
for j in range(020):
for i in range(0line_number):
ret[ij]=np.exp(-((ret_x[i:]-u[ij])*(ret_x[i:]-u[ij]))/(l*l))
#==========
return ret
def main(x_train y_train):
“““
训练模型,并返回从x到y的映射。
“““
#basis_func = identity_basis
basis_func = gaussian_basis
phi0 = np.expand_dims(np.ones_like(x_train) axis=1)
phi1 = basis_func(x_train)
phi = np.concatenate([phi0 phi1] axis=1)
#==========
#todo ‘‘‘计算出一个优化后的w,请分别使用最小二乘法以及梯度下降两种办法优化w‘‘‘
w = np.zeros((21)dtype=float)
w = np.linalg.inv((np.transpose(phi)).dot(phi)).dot(np.transpose(phi)).dot(np.transpose(y_train))
#==========
def f(x):
phi0 = np.expand_dims(np.ones_like(x) axis=1)
phi1 = basis_func(x)
phi = np.concatenate([phi0 phi1] axis=1)
y = np.dot(phi w)
return y
pass
return f
def evaluate(ys ys_pred):
“““评估模型。“““
std = np.sqrt(np.mean(np.abs(ys - ys_pred) ** 2))
return std
# 程序主入口(建议不要改动以下函数的接口)
if __name__ == ‘__main__‘:
train_file = ‘train.txt‘
test_file = ‘test.txt‘
# 载入数据
x_train y_train = load_data(train_file)
x_test y_test = load_data(test_file)
# 使用线性回归训练模型,返回一个函数f()使得y = f(x)
f = main(x_train y_train)
y_train_pred = f(x_train)
std = evaluate(y_train y_train_pred)
print(‘训练集预测值与真实值的标准差:{:.1f}‘.format(std))
# 计算预测的输出值
y_test_pred = f(x_test)
# 使用测试集评估模型
std = evaluate(y_test y_test_pred)
print(‘预测值与真实值的标准差:{:.1f}‘.format(std))
#显示结果
plt.plot(x_train y_train ‘ro‘ markersize=3)
plt.plot(x_test y_test ‘k‘)
plt.plot(x_test y_test_pred ‘k‘)
plt.xlabel(‘x‘)
plt.ylabel(‘y‘)
plt.title(‘Linear Regression‘)
plt.legend([‘train‘ ‘test‘ ‘pred‘])
plt.show()
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2975 2020-11-04 22:01 linear-model.py
文件 3580 2020-10-29 09:43 test.txt
文件 5315 2020-10-29 09:43 train.txt
- 上一篇:神经网络预测控制
- 下一篇:12306抢票代码(基于python2)
相关资源
- 神经网络预测控制
- 利用CNN网络实现mnist图像分类,手动实
- 网络爬虫(pachong_anjuke.py)
- python网络爬虫获取景点信息源码
- 西电python网络处理上机题答案
- Python网络编程 3版 高清扫描版 完整中
- python绘制新型冠状病毒疫情地图与疫
- Python数据爬虫及可视化分析
- 卷积神经网络图像识别python代码pdf
- Python网络爬虫实战.epub
- 贝叶斯网络程序
- 卷积神经网络python
- python网络爬虫爬取整个网页
- Python-在特征金字塔网络FPN的Pytorch实现
- Python-Keras实现Inceptionv4InceptionResnetv1和
- Python-FastSCNN的PyTorch实现快速语义分割
- Python-subpixel利用Tensorflow的一个子像素
- Python-神经网络模型能够从音频演讲中
- OCR:一个有趣的网页版手写数字识别
- NeMo_脉冲神经网络工具_spiking neural n
- python网络数据采集 英文原版
- 使用python自己实现神经网络操纵赛车
- 基于Python的网络爬虫系统的设计与实
- 基于Python的分布式网络爬虫系统的设
- 基于Python网络爬虫毕业论文.doc
- 基于递归神经网络的广告点击率预估
- 用Python写网络爬虫.pdf 高清带书签
- 卷积神经网络的Python实现【试读】1
- Python3网络爬虫数据采集
- Make Your Own Neural Network - 搭建自己的神
评论
共有 条评论