赞
踩
本系列赛题、数据获取:
2021年暑假数学建模模拟赛(赛题+数据+分析)
不直接提供论文等资料,分析已经很详细了
整理不易,欢迎点赞+关注+收藏
这次的赛题完全可以全用SPSS来实现,以前一直目光狭隘,盯着MATLAB和python,经过这次训练赛,笔者意识到了SPSS的重要性
本次赛题简单,所以要写的精彩就有难度了,笔者本次建模做了比较详尽的分析,可以看看哦
读者可以拿它来练手,统计一直是数学建模里很重要的一个部分,但一直受到了忽视
使用SPSS也应该是一项必会的技能
另外笔者发现一个宝藏网站SPSSAU,为了避免广告嫌疑就不放链接了
可以去淘宝搜一个一两天的会员在建模的时候使用,他可以给出详细的分析报表,适合非统计专业的小白做分析使用
直接上论文里的分析啦,主要是使用的SPSS软件,只有一两个代码,附在下一节
都看到这里了,点个赞再走呀
import numpy as np import pandas as pd import matplotlib import matplotlib.pyplot as plt from scipy.spatial.distance import pdist,squareform from scipy.cluster.hierarchy import dendrogram, linkage,fcluster from sklearn.preprocessing import StandardScaler from sklearn.cluster import KMeans from sklearn import metrics from mpl_toolkits.mplot3d import * #数据的读取与标准化 data = pd.read_excel('data.xlsx',index_col = 0) datanp = np.asarray(data) std = StandardScaler() datastd = std.fit_transform(datanp) #计算各类指标 SSE = [] CH = [] SC = [] for k in range(2,31): km = KMeans(k) pred = km.fit_predict(datastd) SSE.append(km.inertia_) CH.append(metrics.calinski_harabasz_score(datastd, pred)) SC.append(metrics.silhouette_score(datastd, pred, metric='euclidean')) #各类指标的可视化 X = range(2,31) plt.xlabel('k') plt.ylabel('SSE') plt.plot(X,SSE,'o-') plt.savefig('1bSSE.png') plt.show() X = range(2,31) plt.xlabel('k') plt.ylabel('CH') plt.plot(X,CH,'o-') plt.show() X = range(2,31) plt.xlabel('k') plt.ylabel('SC') plt.plot(X,SC,'o-') plt.show() #打印出具体类别 ind = np.arange(31) km = KMeans(6) pred = km.fit_predict(datastd) for i in range(6): print('第',i + 1,'类包含有',ind[pred == i]) #绘制聚类3D图 from sklearn.manifold import TSNE X = TSNE(n_components=3).fit_transform(datastd) fig = plt.figure(1, figsize=(8, 6)) ax = Axes3D(fig, elev=-150, azim=110) ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=pred,cmap=plt.cm.Set1, edgecolor='k', s=40) plt.savefig('1b.png')
import numpy as np import pandas as pd import matplotlib.pyplot as plt import gurobipy as gp from gurobipy import GRB from sklearn.metrics import mean_squared_error def RMSE(a,b): return np.sqrt((a-b)**2) gm = pd.read_csv('GM.csv') gmnp = np.asarray(gm) arima = pd.read_csv('ARIMA.csv') arimanp = np.asarray(arima) gme = np.zeros(16) arimae = np.zeros(16) #Compute RMSE for i in range(4,20): gme[i-4] = RMSE(gmnp[i,0],gmnp[i,1]) arimae[i-4] = RMSE(arimanp[i,0],arimanp[i,1]) # Create a new model m = gp. Model (" p5 ") # Create variables w1 = m. addVar ( name ="w1") w2 = m. addVar ( name ="w2") # Set objective m. setObjective (gp.quick_sum(w1 * gme[i] for i in range(16)) + gp.quick_sum(w2 * arimae[i] for i in range(16)), GRB. MINIMIZE ) # Add constraint : w1 + w2 == 1 m. addConstr (w1 + w2 == 1, "c") # Optimize model m. optimize () for v in m. getVars (): print ('%s %g' % (v. varName , v.x)) print ('Obj: %g' % m. objVal )
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。