1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Python实现主成分分析法(PCA)+粒子群算法(PSO)+极限学习机(ELM)的时间序列组合

Python实现主成分分析法(PCA)+粒子群算法(PSO)+极限学习机(ELM)的时间序列组合

时间:2023-12-06 15:52:33

相关推荐

Python实现主成分分析法(PCA)+粒子群算法(PSO)+极限学习机(ELM)的时间序列组合

1.引入数据

import csvimport numpy as npfrom sklearn.preprocessing import StandardScalerfrom sklearn.model_selection import train_test_splitimport matplotlib.pyplot as pltfrom datetime import datetime from sklearn.metrics import explained_variance_scorefrom sklearn.svm import SVR from sklearn.metrics import mean_squared_error from sklearn.metrics import accuracy_scorefrom sklearn.metrics import confusion_matrixfrom sklearn.metrics import classification_reportfrom sklearn.metrics import explained_variance_scorefrom sklearn import metricsimport randomfrom sklearn.decomposition import PCAfrom sklearn.metrics import mean_absolute_error # 平方绝对误差

2.数据处理

#时间time=[]#特征feature=[]#目标target=[]csv_file = csv.reader(open(新疆羊圈湿度.csv))for content in csv_file:content=list(map(float,content))if len(content)!=0:feature.append(content[1:11])target.append(content[0:1])csv_file = csv.reader(open(新疆羊圈时间.csv))for content in csv_file:content=list(map(str,content))if len(content)!=0:time.append(content)targets=[]for i in target:targets.append(i[0])feature.reverse()targets.reverse()# 标准化转换scaler = StandardScaler()# 训练标准化对象scaler.fit(feature)# 转换数据集feature= scaler.transform(feature)#str转datetimetime_rel=[]for i,j in enumerate(time):time_rel.append(datetime.strptime(j[0],\%Y/%m/%d %H:%M))time_rel.reverse()fig = plt.gcf()fig.set_size_inches(18.5, 10.5)plt.title(TURE)plt.plot(time_rel, targets)plt.xlabel(Time)plt.ylabel(Value)

数据长这样

3.PCA降维分析

pca = PCA(n_components=7)newfeature = pca.fit_transform(feature)x_data = [1,2,3,4,5,6,7]y_data = np.around(pca.explained_variance_ratio_, 3)# 绘图plt.bar(x=x_data, height=y_data,color=steelblue, alpha=0.8)fig = plt.gcf()fig.set_size_inches(18.5, 10.5)plt.title("Contribution rate of each principal co

Python实现主成分分析法(PCA)+粒子群算法(PSO)+极限学习机(ELM)的时间序列组合预测模型

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。