0
0 комментариев

Подскажите пожалуйста способ (метод)  для разбития данных из Excel на обучающею и тестовые выборки для keras и потом их нормализации?
В интернете видел только примеры с данными из внешних источников уже в нужном формате, а мне нужно свои.
Вот как я пытаюсь это сделать:

from keras.datasets import boston_housing
from keras.models import Sequential
from keras.layers import Dense
import openpyxl
import numpy as np
 #Для начала загрузим библиотеку и выберем нужную книгу и рабочий лист:
wb = openpyxl.load_workbook(filename = 'E:/Fast_Water_project/Gidrolodge_.xlsx')
sheet_oren = wb['Or']
 def Not_None (x):
    if x!=None:
        return float(str(x).replace(',','.'))
    else:
        return float(0)
     #считываем заданный диапазон
factor_days = [Not_None(v[0].value) for v in sheet_oren['E2':'E1126']]
factor_osadky = [Not_None(v[0].value) for v in sheet_oren['F2':'F1126']]
factor_level_snow = [Not_None(v[0].value) for v in sheet_oren['G2':'G1126']]
factor_chandge_lvl_snow = [Not_None(v[0].value) for v in sheet_oren['H2':'H1126']]
factor_reserv_water = [Not_None(v[0].value) for v in sheet_oren['I2':'I1126']]
factor_frez_ground = [Not_None(v[0].value) for v in sheet_oren['J2':'J1126']]
factor_ice = [Not_None(v[0].value) for v in sheet_oren['K2':'K1126']]
factor_max_t = [Not_None(v[0].value) for v in sheet_oren['L2':'L1126']]
factor_min_t = [Not_None(v[0].value) for v in sheet_oren['M2':'M1126']]
factor_humidity = [Not_None(v[0].value) for v in sheet_oren['N2':'N1126']]
factor_deficit_humidity = [Not_None(v[0].value) for v in sheet_oren['O2':'O1126']]
factor_solar = [Not_None(v[0].value) for v in sheet_oren['P2':'P1126']]
factor_level_water = [Not_None(v[0].value) for v in sheet_oren['Q2':'Q1126']]
resolve_chandge_lvl_water = [Not_None(v[0].value) for v in sheet_oren['R2':'R1126']]
 #factors_resolve=[factor_days,factor_osadky,factor_level_snow,factor_chandge_lvl_snow,factor_reserv_water,factor_frez_ground,factor_ice
#                    ,factor_max_t,factor_min_t,factor_humidity,factor_deficit_humidity,factor_solar,factor_level_water,resolve_chandge_lvl_water]
 factors_list=list()
resolve_list=list()
factors_list.append(factor_days)
factors_list.append(factor_osadky)
factors_list.append(factor_level_snow)
factors_list.append(factor_chandge_lvl_snow)
factors_list.append(factor_reserv_water)
factors_list.append(factor_frez_ground)
factors_list.append(factor_ice)
factors_list.append(factor_max_t)
factors_list.append(factor_min_t)
factors_list.append(factor_humidity)
factors_list.append(factor_deficit_humidity)
factors_list.append(factor_solar)
factors_list.append(factor_level_water)
resolve_list=[x for x in resolve_chandge_lvl_water]
 factors=np.array(factors_list)
resolve=np.array(resolve_list)
 (x_train, y_train), (x_test, y_test) = boston_housing.load_data(factors,resolve)
 #Нормализация данных
#Вычитаем среднее значение и делим на стандартное отклонение
# Среднее значение
# mean = x_train.mean(axis=0)
# Стандартное отклонение
# std = x_train.std(axis=0)
# x_train -= mean
# x_train /= std
# x_test -= mean
# x_test /= std

Но мне выдает ошибку потому что метод .load_data() принимает данные в другом формате:
File «C:\Users\Vladimir\Anaconda3\envs\krs\lib\site-packages\keras\datasets\boston_housing.py», line 24, in load_data
assert 0 <= test_split < 1

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
А данные передаю вот в таком виде*
Factors:
[[‘0’ ‘1’ ‘2’ … ‘149’ ‘150’ ‘151’]
[‘2.8’ ‘0.6’ ‘13.4’ … ‘0’ ‘0’ ‘0’]
[‘0’ ‘0’ ‘0’ … ‘0’ ‘0’ ‘0’]

[‘0.5’ ‘0.5’ ‘0.5’ … ‘0’ ‘0’ ‘0’]
[‘0’ ‘2.1’ ‘0’ … ‘0’ ‘0’ ‘0’]
[‘208’ ‘208’ ‘208’ … ‘0’ ‘0’ ‘0’]]
Ressolve:
[0 0 0 … 0 0 0]

 


Добавить комментарий