首页 > 解决方案 > 准备 HDF5 数据以创建 scikit ML 模型

问题描述

我需要创建机器学习模型来模拟一些数据处理任务。有问题的数据是用于计算风速的几个雷达波段。这些波段的相互作用决定了如何计算速度。由于波段的极化,我最终得到了 12 个输入 Pandas 数据帧,对应于一个输出帧,这是风速的“真实”值。我正在尝试创建一个 SVM 模型。我觉得我可以稍微优化数据,但遇到一些效率问题和数据转换警告,我不知道如何解决。该代码似乎需要一段时间才能与线性回归和 SGD 等其他模型一起输出,但 SVM 似乎在建模过程中卡住了好几个小时。代码摘要如下。

import numpy as np
import h5py                  
import matplotlib.pyplot as plt
from sklearn import linear_model
from sklearn.svm import SVR

f1 = h5py.File(inputFile,"r") 
f2 = h5py.File(trainingFile,"r")
G35V   = f1['Brightness Temperature (36.5GHz,V)']
G35H   = f1['Brightness Temperature (36.5GHz,H)']

G6V = f1['Brightness Temperature (6.9GHz,V)']
G6H = f1['Brightness Temperature (6.9GHz,H)']

G7H = f1['Brightness Temperature (7.3GHz,H)']
G7V = f1['Brightness Temperature (7.3GHz,V)']

G10H = f1['Brightness Temperature (10.7GHz,H)']
G10V = f1['Brightness Temperature (10.7GHz,V)']

G18H = f1['Brightness Temperature (18.7GHz,H)']
G18V = f1['Brightness Temperature (18.7GHz,V)']

G23H = f1['Brightness Temperature (23.8GHz,H)']
G23V = f1['Brightness Temperature (23.8GHz,V)']

GeoD = f2['Geophysical Data']
GeoData = np.ndarray(shape=GeoD.shape,dtype=int)
GeoD.read_direct(GeoData)
#remove dimension to match inputs
GeoData = GeoData[:,:,0]

inputDataframe = pd.DataFrame({'G35H':np.asarray(G35H).flatten(), 'G35V':np.asarray(G35V).flatten(), 'G6V':np.asarray(G6V).flatten(), 'G6H':np.asarray(G6H).flatten(), 'G7V':np.asarray(G7V).flatten(),'G7H':np.asarray(G7H).flatten(), 'G10V':np.asarray(G10V).flatten(),'G10H':np.asarray(G10H).flatten(),'G18V':np.asarray(G18V).flatten(),'G18H':np.asarray(G18H).flatten(), 'G23V':np.asarray(G23V).flatten(),'G23H':np.asarray(G23H).flatten() }  )

outputDataframe = pd.DataFrame({'GeoData': np.asarray(GeoData).flatten()})
f1.close()
f2.close()
SVM = SVR()
SVM.fit(inputDataframe , outputDataframe)

创建后,模型将被传递给另一个方法,以使用以下循环和不同的输入文件创建输出预测:

for idx, x in np.ndenumerate(o_gp):
    o_gp[idx] = SVM.predict([[G35H[idx] ,G35V[idx],G6V[idx] ,G6H[idx] ,G7V[idx] ,G7H[idx] ,G10V[idx],G10H[idx],G18V[idx] ,G18H[idx] , G23V[idx], G23H[idx] ]])

非常感谢任何输入。谢谢

标签: pythonscikit-learnhdf5

解决方案


推荐阅读