这个python程序可以将散点数据,通过机器学习绘制出三维曲面,大家可能会用的到。
效果图:
NN模型
MART模型
目录结构:
使用说明:一、Data.csv 文件的四列数据分别是探索式创新、利用式创新、企业成长绩效、企业财务绩效二、NN模型创建参数max_iter=400是迭代次数,默认是200,不同迭代次数得到的最优回归曲面不同。三、MART模型创建参数max_depth=4是树的深度,数值越大,图形台阶越多。其中 探索式创新、利用式创新为自变量,企业成长绩效、企业财务绩效是因变量四个py文件分别是两种模型对财务绩效和成长绩效的分析
大家用的时候先安装库,将Data.csv中四列数据换成自己的,再将程序中xyz坐标轴标签、区间修改
[Python] 纯文本查看 复制代码 from sklearn.neural_network import MLPRegressor
import pandas as pd
# 定义线性回归模型
import numpy as np
from pylab import mpl
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
#文本读取与处理
def readfile(path):
X = []
che = []
cai = []
for line in open(path,'r', encoding='UTF-8'):
#print(line)
xx,yy,chee,caii = line.split(',',3)
X.append([float(xx),float(yy)])
che.append(float(chee))
cai.append(float(caii))
#返回数据集列表
return(X,che)
if __name__=='__main__':
print('读取数据...')
X,y = readfile('data.csv')
print('创建神经网络模型')
clf = MLPRegressor(max_iter=400)
print('训练模型...')
clf.fit(X, y)
#向三维图中添加散点
print('生成散点图...')
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
for i in range(len(X)):
ax.scatter(X[i][0], X[i][1],y[i], c='black', marker='o', s=4)
#向三维图中添加影响曲面
print('生成曲面...')
ps = np.arange(1, 7, 0.25)
py = np.arange(1, 7, 0.25)
XX, YY = np.meshgrid(ps, py)
R = np.random.randint(2,size=(24,24)).astype(float)
for i in range(len(XX)):
for j in range(len(XX[0])):
R[i][j]= round(clf.predict([[XX[i][j],YY[i][j]]])[0],1)
ax.plot_surface(XX, YY, R,rstride=1, cstride=1, cmap='Greys')#'rainbow')
# 设置图形坐标范围
ax.set_xlim3d(1, 7)
ax.set_ylim3d(1, 7)
ax.set_zlim3d(1, 7)
# 设置图形轴标签
ax.set_xlabel('探索式创新')
ax.set_ylabel('利用式创新')
ax.set_zlabel('企业成长绩效')
print('展示图表')
plt.show()
最后奉上代码文件,以供大家交流讨论。
百度网盘:链接:https://pan.baidu.com/s/1VF8aSFGK9QEfuX_-zC8Z0Q
提取码:71jl
解压密码:www.52pojie.cn |