pre_mean = np.mean(pre, axis=1)和pre_mean = np.mean(pre,1)有什么区别

时间: 2023-10-26 22:07:47 浏览: 36
`pre_mean = np.mean(pre, axis=1)`和`pre_mean = np.mean(pre,1)`实现的功能相同,都是求`pre`数组的每行的平均值。 区别在于,`np.mean()`函数可以通过`axis`参数指定计算平均值的轴,而`pre_mean = np.mean(pre,1)`是`np.mean()`函数的简写形式,其中`1`代表了`axis=1`,即计算每行的平均值。如果要计算每列的平均值,则需要使用`pre_mean = np.mean(pre,0)`或`pre_mean = np.mean(pre,axis=0)`。 总的来说,`np.mean(pre, axis=1)`更加明确地指定了计算平均值的轴,更加清晰易懂。而`np.mean(pre,1)`则是其简写形式,更加简洁。
相关问题

year, lon, lat, pre=getpre(pth) #print(pre) #print(pre.shape) #(56, 29, 65) pre_mean = pre.mean(1) pre_mean = pre_mean.mean(1) print(pre_mean)为什么得到的pre_mean全是nan

根据代码,可以看出 `pre` 是一个三维数组,其形状为 `(56, 29, 65)`,表示共有 56 个样本,每个样本有 29 行和 65 列。在计算 `pre_mean` 时,首先对第二维进行均值计算,得到一个二维数组,然后对第三维进行均值计算,得到一个一维数组。但是,如果第二维或第三维存在缺失值,将会导致计算结果为 NaN。 因此,可以通过以下代码来查看缺失值的情况: ```python # 计算 pre_mean pre_mean = pre.mean(1) pre_mean = pre_mean.mean(1) # 查看是否存在 NaN 值 print(np.isnan(pre_mean).sum()) ``` 如果输出结果不为 0,说明存在 NaN 值。在这种情况下,可以使用 Numpy 的 `nanmean()` 函数来计算均值,该函数会自动忽略 NaN 值。具体来说,可以将上述代码修改为: ```python # 计算 pre_mean pre_mean = np.nanmean(pre, axis=1) pre_mean = np.nanmean(pre_mean, axis=1) # 查看是否存在 NaN 值 print(np.isnan(pre_mean).sum()) ``` 这样就可以计算出不含 NaN 值的 `pre_mean` 了。

import numpy as np import pandas as pd import matplotlib.pyplot as plt import BPNN from sklearn import metrics from sklearn.metrics import mean_absolute_error from sklearn.metrics import mean_squared_error #导入必要的库 df1=pd.read_excel(r'D:\Users\Desktop\大数据\44.xls',0) df1=df1.iloc[:,:] #进行数据归一化 from sklearn import preprocessing min_max_scaler = preprocessing.MinMaxScaler() df0=min_max_scaler.fit_transform(df1) df = pd.DataFrame(df0, columns=df1.columns) x=df.iloc[:,:4] y=df.iloc[:,-1] #划分训练集测试集 cut=4#取最后cut=30天为测试集 x_train, x_test=x.iloc[4:],x.iloc[:4]#列表的切片操作,X.iloc[0:2400,0:7]即为1-2400行,1-7列 y_train, y_test=y.iloc[4:],y.iloc[:4] x_train, x_test=x_train.values, x_test.values y_train, y_test=y_train.values, y_test.values #神经网络搭建 bp1 = BPNN.BPNNRegression([4, 16, 1]) train_data=[[sx.reshape(4,1),sy.reshape(1,1)] for sx,sy in zip(x_train,y_train)] test_data = [np.reshape(sx,(4,1))for sx in x_test] #神经网络训练 bp1.MSGD(train_data, 1000, len(train_data), 0.2) #神经网络预测 y_predict=bp1.predict(test_data) y_pre = np.array(y_predict) # 列表转数组 y_pre=y_pre.reshape(4,1) y_pre=y_pre[:,0] #画图 #展示在测试集上的表现 draw=pd.concat([pd.DataFrame(y_test),pd.DataFrame(y_pre)],axis=1); draw.iloc[:,0].plot(figsize=(12,6)) draw.iloc[:,1].plot(figsize=(12,6)) plt.legend(('real', 'predict'),loc='upper right',fontsize='15') plt.title("Test Data",fontsize='30') #添加标题 #输出精度指标 print('测试集上的MAE/MSE') print(mean_absolute_error(y_pre, y_test)) print(mean_squared_error(y_pre, y_test) ) mape = np.mean(np.abs((y_pre-y_test)/(y_test)))*100 print('=============mape==============') print(mape,'%') # 画出真实数据和预测数据的对比曲线图 print("R2 = ",metrics.r2_score(y_test, y_pre)) # R2 运行上述程序。在下面这一步中draw=pd.concat([pd.DataFrame(y_test),pd.DataFrame(y_pre)],axis=1);我需要将归一化的数据变成真实值,输出对比图,该怎么修改程序

在将归一化的数据变回真实值的过程中,需要将归一化的因变量(即最后一列)逆转换回来,以得到真实的预测值和真实值。代码如下: ``` # 将预测结果和真实结果逆归一化 y_predict = min_max_scaler.inverse_transform(y_pre.reshape(-1, 1)) y_test = min_max_scaler.inverse_transform(y_test.reshape(-1, 1)) # 画图 draw=pd.concat([pd.DataFrame(y_test), pd.DataFrame(y_predict)], axis=1) draw.iloc[:,0].plot(figsize=(12,6)) draw.iloc[:,1].plot(figsize=(12,6)) plt.legend(('real', 'predict'), loc='upper right', fontsize='15') plt.title("Test Data", fontsize='30') # 输出精度指标 print('测试集上的MAE/MSE') print(mean_absolute_error(y_predict, y_test)) print(mean_squared_error(y_predict, y_test)) mape = np.mean(np.abs((y_predict-y_test)/(y_test)))*100 print('=============mape==============') print(mape,'%') # 输出R2分数 print("R2 = ", metrics.r2_score(y_test, y_predict)) ``` 在此代码中,我们使用了 MinMaxScaler 对象的 inverse_transform() 方法将归一化的结果转换回原始的数据范围。运行修改后的代码,即可得到真实值与预测值的对比图,以及各种精度指标的输出。

相关推荐

x_train = train.drop(['id','label'], axis=1) y_train = train['label'] x_test=test.drop(['id'], axis=1) def abs_sum(y_pre,y_tru): y_pre=np.array(y_pre) y_tru=np.array(y_tru) loss=sum(sum(abs(y_pre-y_tru))) return loss def cv_model(clf, train_x, train_y, test_x, clf_name): folds = 5 seed = 2021 kf = KFold(n_splits=folds, shuffle=True, random_state=seed) test = np.zeros((test_x.shape[0],4)) cv_scores = [] onehot_encoder = OneHotEncoder(sparse=False) for i, (train_index, valid_index) in enumerate(kf.split(train_x, train_y)): print('************************************ {} ************************************'.format(str(i+1))) trn_x, trn_y, val_x, val_y = train_x.iloc[train_index], train_y[train_index], train_x.iloc[valid_index], train_y[valid_index] if clf_name == "lgb": train_matrix = clf.Dataset(trn_x, label=trn_y) valid_matrix = clf.Dataset(val_x, label=val_y) params = { 'boosting_type': 'gbdt', 'objective': 'multiclass', 'num_class': 4, 'num_leaves': 2 ** 5, 'feature_fraction': 0.8, 'bagging_fraction': 0.8, 'bagging_freq': 4, 'learning_rate': 0.1, 'seed': seed, 'nthread': 28, 'n_jobs':24, 'verbose': -1, } model = clf.train(params, train_set=train_matrix, valid_sets=valid_matrix, num_boost_round=2000, verbose_eval=100, early_stopping_rounds=200) val_pred = model.predict(val_x, num_iteration=model.best_iteration) test_pred = model.predict(test_x, num_iteration=model.best_iteration) val_y=np.array(val_y).reshape(-1, 1) val_y = onehot_encoder.fit_transform(val_y) print('预测的概率矩阵为:') print(test_pred) test += test_pred score=abs_sum(val_y, val_pred) cv_scores.append(score) print(cv_scores) print("%s_scotrainre_list:" % clf_name, cv_scores) print("%s_score_mean:" % clf_name, np.mean(cv_scores)) print("%s_score_std:" % clf_name, np.std(cv_scores)) test=test/kf.n_splits return test def lgb_model(x_train, y_train, x_test): lgb_test = cv_model(lgb, x_train, y_train, x_test, "lgb") return lgb_test lgb_test = lgb_model(x_train, y_train, x_test) 这段代码运用了什么学习模型

#importing required libraries from sklearn.preprocessing import MinMaxScaler from keras.models import Sequential from keras.layers import Dense, Dropout, LSTM #setting index data = df.sort_index(ascending=True, axis=0) new_data = data[['trade_date', 'close']] new_data.index = new_data['trade_date'] new_data.drop('trade_date', axis=1, inplace=True) new_data.head() #creating train and test sets dataset = new_data.values train= dataset[0:1825,:] valid = dataset[1825:,:] #converting dataset into x_train and y_train scaler = MinMaxScaler(feature_range=(0, 1)) scaled_data = scaler.fit_transform(dataset) x_train, y_train = [], [] for i in range(60,len(train)): x_train.append(scaled_data[i-60:i,0]) y_train.append(scaled_data[i,0]) x_train, y_train = np.array(x_train), np.array(y_train) x_train = np.reshape(x_train, (x_train.shape[0],x_train.shape[1],1)) # create and fit the LSTM network model = Sequential() model.add(LSTM(units=50, return_sequences=True, input_shape=(x_train.shape[1],1))) model.add(LSTM(units=50)) model.add(Dense(1)) model.compile(loss='mean_squared_error', optimizer='adam') model.fit(x_train, y_train, epochs=1, batch_size=1, verbose=1) #predicting 246 values, using past 60 from the train data inputs = new_data[len(new_data) - len(valid) - 60:].values inputs = inputs.reshape(-1,1) inputs = scaler.transform(inputs) X_test = [] for i in range(60,inputs.shape[0]): X_test.append(inputs[i-60:i,0]) X_test = np.array(X_test) X_test = np.reshape(X_test, (X_test.shape[0],X_test.shape[1],1)) closing_price = model.predict(X_test) closing_price1 = scaler.inverse_transform(closing_price) rms=np.sqrt(np.mean(np.power((valid-closing_price1),2))) rms #v=new_data[1825:] valid1 = pd.DataFrame() # 假设你使用的是Pandas DataFrame valid1['Pre_Lstm'] = closing_price1 train=new_data[:1825] plt.figure(figsize=(16,8)) plt.plot(train['close']) plt.plot(valid1['close'],label='真实值') plt.plot(valid1['Pre_Lstm'],label='预测值') plt.title('LSTM预测',fontsize=16) plt.xlabel('日期',fontsize=14) plt.ylabel('收盘价',fontsize=14) plt.legend(loc=0)

f_path = r"E:\gra_thesis\sum_pre_data_new\grid_nc\AMJ_pre_total_precip.nc" f = xr.open_dataset(f_path) f # %% lon = f['lon'] lat = f['lat'] data= f['precip'] data_mean = np.mean(data, 0) # %% shp_path = r"C:\Users\86133\Desktop\thesis\2020国家级行政边界\China_province.shp" sf = shapefile.Reader(shp_path) shp_reader = Reader(shp_path) sf.records() region_list = [110000, 120000, 130000,140000,150000,210000,220000, 230000, 310000, 320000,330000,340000,350000,360000, 370000, 410000, 420000,430000,440000,450000,460000, 500000, 510000, 520000,530000,540000,610000,620000, 630000, 640000, 650000,710000,810000,820000] # %% proj = ccrs.PlateCarree() extent = [105, 125, 15, 30] fig, ax = plt.subplots(1, 1, subplot_kw={'projection': proj}) ax.set_extent(extent, proj) # ax.add_feature(cfeature.LAND, fc='0.8', zorder=1) ax.add_feature(cfeature.COASTLINE, lw=1, ec="k", zorder=2) ax.add_feature(cfeature.OCEAN, fc='white', zorder=2) ax.add_geometries(shp_reader.geometries(), fc="None", ec="k", lw=1, crs=proj, zorder=2) ax.spines['geo'].set_linewidth(0.8) ax.tick_params(axis='both',which='major',labelsize=9, direction='out',length=2.5,width=0.8,pad=1.5, bottom=True, left=True) ax.tick_params(axis='both',which='minor',direction='out',width=0.5,bottom=True,left=True) ax.set_xticks(np.arange(105, 130, 5)) ax.set_yticks(np.arange(15, 40, 5)) ax.xaxis.set_major_formatter(LongitudeFormatter()) ax.yaxis.set_major_formatter(LatitudeFormatter()) cf = ax.contourf(lon, lat, data_mean, extend='both', cmap='RdBu') cb = fig.colorbar(cf, shrink=0.9, pad=0.05)解释这段代码

#预测因子(海温) #nino3.4赤道东太平洋(190-220,-5-5) a22=sst_djf.sel(lon=slice(190,220),lat=slice(5,-5)).mean(axis=1).mean(axis=1) a2=(a22-a22.mean())/a22.std() #赤道印度洋(50-80,-5-5) a33=sst_djf.sel(lon=slice(50,100),lat=slice(5,-5)).mean(axis=1).mean(axis=1) a3=(a33-a33.mean())/a33.std() #预测因子(环流场) #南欧(30-40,35-45) b11=hgt_djf.sel(lon=slice(30,40),lat=slice(45,35)).mean(axis=1).mean(axis=1) b1=(b11-b11.mean())/b11.std() #太平洋副高(120-180,-10-10) b22=hgt_djf.sel(lon=slice(120,180),lat=slice(10,-10)).mean(axis=1).mean(axis=1) b2=(b22-b22.mean())/b22.std() #印度洋(60-80,-10-10) b33=hgt_djf.sel(lon=slice(60,80),lat=slice(10,-10)).mean(axis=1).mean(axis=1) b3=(b33-b33.mean())/b33.std() x=np.vstack([(a2,a3,b1,b2,b3)]).T x2=np.vstack([(a2,b1)]).T y=pre_standard #多元线性回归 res=np.linalg.lstsq(x,y,rcond=None) n=res[0] ##各项系数 y_fit=(n.T*x).sum(axis=1) #拟合数据 res2=np.linalg.lstsq(x2,y,rcond=None) n2=res2[0] ##各项系数 y_fit2=(n2.T*x2).sum(axis=1) #拟合数据 #可视化 time=np.arange(1961,2017,1) fig = plt.figure(figsize=[16, 5]) ax = fig.add_subplot() ax.plot(time, y,marker='o', color='gray', markersize=5) ax.plot(time, y_fit,marker='*', color='b', markersize=5) ax.plot(time, y_fit2,marker='^', color='r', markersize=5) ax.set_title('model',fontsize=20,fontweight='bold') ax.set_xlabel('Time') ax.set_ylabel('Pre') plt.legend(['Source data','Fitted1','Fitted2'],frameon=False,loc='best') plt.show()选做剔除一年的交叉检验,独立试报

最新推荐

recommend-type

年终工作总结汇报PPTqytp.pptx

年终工作总结汇报PPTqytp.pptx
recommend-type

setuptools-32.1.1-py2.py3-none-any.whl

Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
recommend-type

基于java的聊天系统的设计于实现.zip

基于java的聊天系统的设计于实现
recommend-type

罗兰贝格_xx事业部制建议书gltp.pptx

罗兰贝格_xx事业部制建议书gltp.pptx
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依