Уведомления

Группа в Telegram: присоединиться
  • Начало
  • » Python для новичков
  • » Как передать данные в Keras для разбития на обучающею и тестовую часть и последующей нормализацией [RSS Feed]

#1 Фев. 13, 2020 17:12:56

Volodya
Зарегистрирован: 2020-02-13
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Как передать данные в Keras для разбития на обучающею и тестовую часть и последующей нормализацией

Подскажите пожалуйста способ (метод) для разбития данных из 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:
[





]
Ressolve:

Отредактировано Volodya (Фев. 13, 2020 17:13:46)

Офлайн

#2 Фев. 14, 2020 08:10:10

Striver
От:
Зарегистрирован: 2006-10-26
Сообщения: 247
Репутация: +  22  -
Профиль   Отправить e-mail  

Как передать данные в Keras для разбития на обучающею и тестовую часть и последующей нормализацией

Непонятно.
Ты пишешь, что хочешь использовать свои данные, и долго грузишь их из Excel'я. Тогда зачем тебе этот самый boston_housing? Это учебный датасет, как ты его к своим данным хочешь прилепить?
Конкретно метод boston_housing.load_data() нужен для загрузки своих учебных данных и принимает именованные аргументы path, test_split и seed, к твоим данным это не может иметь отношения.

Для разбиения своих данных на основную и тестовую выборки обычно используют функцию train_test_split из библиотеки sklearn:

 from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

Всегда странно видеть такие вопросы совсем не начального уровня в теме “для новичков”…



Офлайн

#3 Фев. 14, 2020 16:45:05

Volodya
Зарегистрирован: 2020-02-13
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Как передать данные в Keras для разбития на обучающею и тестовую часть и последующей нормализацией

Striver
Для разбиения своих данных на основную и тестовую выборки обычно используют функцию train_test_split из библиотеки sklearn:
Что-то анаконда не может найти эту библиотеку:
(krs) PS C:\Users\Vladimir> conda search sklearn
Loading channels: done
No match found for: sklearn. Search: *sklearn*

PackagesNotFoundError: The following packages are not available from current channels:
- sklearn
Current channels:
- https://repo.anaconda.com/pkgs/main/win-64
- https://repo.anaconda.com/pkgs/main/noarch
- https://repo.anaconda.com/pkgs/r/win-64
- https://repo.anaconda.com/pkgs/r/noarch
- https://repo.anaconda.com/pkgs/msys2/win-64
- https://repo.anaconda.com/pkgs/msys2/noarch
To search for alternate channels that may provide the conda package you're
looking for, navigate to
https://anaconda.org
and use the search bar at the top of the page.

А ПИП нашел: pip install sklearn. Странно

Отредактировано Volodya (Фев. 14, 2020 16:57:43)

Офлайн

#4 Фев. 14, 2020 17:04:55

Volodya
Зарегистрирован: 2020-02-13
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Как передать данные в Keras для разбития на обучающею и тестовую часть и последующей нормализацией

Striver
Для разбиения своих данных на основную и тестовую выборки обычно используют функцию train_test_split из библиотеки sklearn:
Что-то все равно не нравится ему мой набор данных

File “E:\Fast_Water_project\NeironNet.py”, line 71, in <module>
X_train, X_test, y_train, y_test = train_test_split(factors,resolve, test_size=0.33, random_state=42)

File “C:\Users\Vladimir\Anaconda3\envs\krs\lib\site-packages\sklearn\model_selection\_split.py”, line 2118, in train_test_split
arrays = indexable(*arrays)

File “C:\Users\Vladimir\Anaconda3\envs\krs\lib\site-packages\sklearn\utils\validation.py”, line 248, in indexable
check_consistent_length(*result)

File “C:\Users\Vladimir\Anaconda3\envs\krs\lib\site-packages\sklearn\utils\validation.py”, line 212, in check_consistent_length
“ samples: %r” % )

ValueError: Found input variables with inconsistent numbers of samples:

Кажется понял. Я наборы факторов отправлял как массив массивов, а на надо было наверное всё-таки как массив.
Вот только тогда не понятно, как Керас разобьет (сопоставит) наборы данных (факторов) с результатами?
Сделает ли он это верно?

Нет это не верно, он считает каждое значение массива факторов отдельным фактором, а не элементом вектора значений факторов

Отредактировано Volodya (Фев. 14, 2020 19:02:35)

Офлайн

#5 Фев. 14, 2020 17:07:10

Volodya
Зарегистрирован: 2020-02-13
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Как передать данные в Keras для разбития на обучающею и тестовую часть и последующей нормализацией

Striver
Всегда странно видеть такие вопросы совсем не начального уровня в теме “для новичков”…
Я первый раз пишу на Python. До этого мы изучали другие языки. Поэтому и написал сюда

Офлайн

  • Начало
  • » Python для новичков
  • » Как передать данные в Keras для разбития на обучающею и тестовую часть и последующей нормализацией[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version