Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2017, 14:13   #1
d1ce
Новичок
Джуниор
 
Регистрация: 03.02.2017
Сообщений: 2
Вопрос Нейросеть на Python

Задача о титанике. Объясните пожалуйста как обученную сеть проверить на тестовом наборе в нижеприведенном коде.
Код:
import argparse, pandas as pd
from sklearn import preprocessing
from sklearn.pipeline import Pipeline
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import f_regression
from sklearn.grid_search import GridSearchCV

def rf(X,y, xtest, ytest):
    anova_pre = SelectKBest(f_regression, k=8)
    model = Pipeline([
        ('inp', preprocessing.Imputer(strategy='mean', missing_values=-1)),
        ('anova', anova_pre),
        ('clf', GradientBoostingClassifier()),
        ])
    grid = GridSearchCV(model, {
        'inp__strategy': ['mean', 'median'],
        'clf__learning_rate': [0.5, 0.8,1],
        'clf__max_depth':[5, 7, None],
        'clf__n_estimators': [50, 100],
        }, cv=5, verbose=3)
    model = grid.fit(X, y)
    print("This is test: ", model.score(xtest, ytest))

def model1(title):
    df = pd.read_csv('./data/train.csv')
    df = df.drop(['Name', 'Ticket', 'Cabin'], axis=1)
    df['Gender']= df['Sex'].map({'female':0, 'male': 1}).astype(int)    
    df['Embarked'] = df['Embarked'].fillna('S')
    df["Age"] = df["Age"].fillna(df["Age"].median())
    df = pd.concat([df, pd.get_dummies(df['Embarked'], prefix='Embarked')], axis=1)
    df = df.drop(['Sex', 'Embarked'], axis=1)
    cols = df.columns.tolist()
    cols = [cols[1]] + cols[0:1] + cols[2:]
    df = df[cols]
    train_data = df.values
    model = RandomForestClassifier(n_estimators=100)
    model = model.fit(train_data[0:, 2:], train_data[0:,0]) 
    rf(train_data[0:, 2:], train_data[0:,0], train_data[0:, 2:], train_data[0:,0])
    
"""Далее загрузка тестового файла"""

    df_test = pd.read_csv('./data/test.csv')
    df_test = df_test.drop(['Name', 'Ticket', 'Cabin'], axis=1)
    df_test['Gender']= df_test['Sex'].map({'female':0, 'male': 1}).astype(int)
    df["Age"] = df["Age"].fillna(df["Age"].median())
    fare_means = df.pivot_table('Fare', index='Pclass', aggfunc='mean')
    df_test['Fare'] = df_test[['Fare', 'Pclass']].apply(lambda x: fare_means[x['Pclass']]
        if pd.isnull(x['Fare']) else x['Fare'], axis=1)
    df_test = pd.concat([df_test, pd.get_dummies(df_test['Embarked'], prefix='Embarked')], axis=1)
    df_test = df_test.drop(['Sex', 'Embarked'], axis=1)
    test_data = df_test.values
                       
def run():
    parser = argparse.ArgumentParser(description='Parsing model arguments')
    parser.add_argument('--rf', help='Random forest model', default=False, action='store_true')
    result = parser.parse_args()
    model1(result)
               
run()
Вложения
Тип файла: rar data.rar (31.4 Кб, 14 просмотров)

Последний раз редактировалось Alex11223; 03.02.2017 в 14:52.
d1ce вне форума Ответить с цитированием
Старый 14.02.2017, 05:56   #2
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Могу показать пару примеров на pybrain и на с.
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 27.02.2017, 15:53   #3
d1ce
Новичок
Джуниор
 
Регистрация: 03.02.2017
Сообщений: 2
По умолчанию

Покажите, если не затруднит.
можно и на почту: brieffkasten@gmail.com
d1ce вне форума Ответить с цитированием
Старый 27.02.2017, 17:41   #4
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Все примеры взяты от сюда.

http://pybrain.org/docs/quickstart/network.html

Это наверное самый простой пример которые включает в себя все этапы создания просто сети, кроме чтения сети из фала и созранение обученой сети в файл.

Код:

#!/usr/bin/python
# -*- coding: utf-8 -*-

from pybrain.tools.shortcuts import buildNetwork
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer

# from pybrain.structure import LinearLayer
# from pybrain.structure import SigmoidLayer
from pybrain.structure import TanhLayer

# ----------------------------------------------------------
# Параметры сети (базовые);
inp_neur = 2; # Кол-во ВХОДОВ
hid_neur = 3; # Кол-во нйронов в скрытом слое
out_neur = 1; # Кол-во ВЫХОДОВ

# ----------------------------------------------------------
# Обучающие данные
mDataSet = SupervisedDataSet(inp_neur, out_neur); # Инфа для обучения

# Пример информации для XOR
mDataSet.addSample((0, 0), (0,));
mDataSet.addSample((0, 1), (1,));
mDataSet.addSample((1, 0), (1,));
mDataSet.addSample((1, 1), (0,));

# ----------------------------------------------------------
# Однослойная сеть
mNet = buildNetwork(
    inp_neur, hid_neur, out_neur, bias=True, hiddenclass=TanhLayer);

# ----------------------------------------------------------
min_error = 0.001; # Обучаем четь пока ошибка будет выше <<< 
ITER_C = 0; # Количество Эпох, ( 1 эпоха == все данные для обучения )

# Тот алгоритм который будет контролировать обучение сети
# В данном случае это "Метод обратного разпространения"
trainer = BackpropTrainer(mNet, mDataSet);
error_result = trainer.train();

# Тренировать сразу
# trainer.trainUntilConvergence()

# Тренировать Контролируемо. Очень полезно
while min_error < error_result:
    error_result = trainer.train();
    print( ' EPOCH: ['+str(ITER_C)+'] => ERROR: ['+str(error_result)+']' );
    ITER_C += 1;
=================================== ==
Или вот пример (это писал не я) более детальной настройки сети.
http://pybrain.org/docs/tutorial/netmodcon.html
Код:
from pybrain.structure import FeedForwardNetwork
n = FeedForwardNetwork()

from pybrain.structure import LinearLayer, SigmoidLayer
inLayer = LinearLayer(8)
hiddenLayer = SigmoidLayer(10)
hiddenLayer2 = SigmoidLayer(10)
outLayer = LinearLayer(2)

n.addInputModule(inLayer)
n.addModule(hiddenLayer)
n.addModule(hiddenLayer2)
n.addOutputModule(outLayer)

from pybrain.structure import FullConnection
in_to_hidden = FullConnection(inLayer, hiddenLayer1)
hidden_to_hidden = FullConnection(hiddenLayer1, hiddenLayer2)
hidden_to_out = FullConnection(hiddenLayer2, outLayer)

n.addConnection(in_to_hidden)
n.addConnection(hidden_to_hidden)
n.addConnection(hidden_to_out)

n.sortModules()
Сам пишу и люблю сети на языке "C". Так как это скорость.
Если интересно, покажу пару примеров. Использую FANN библиотеку.
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 27.02.2017, 17:46   #5
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

А вот так ее прочитать и записать из файла.

Код:
from pybrain.tools.shortcuts import buildNetwork
from pybrain.tools.customxml.networkwriter import NetworkWriter
from pybrain.tools.customxml.networkreader import NetworkReader

net = buildNetwork(2,4,1)

NetworkWriter.writeToFile(net, 'filename.xml')
net = NetworkReader.readFrom('filename.xml')
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нейросеть как автономное приложение mish_k98 Помощь студентам 8 29.02.2020 20:29
Как загрузить изображение в нейросеть? andrejf92 Общие вопросы C/C++ 6 05.02.2017 17:21
Написать программу для решения задачи Коммивояжера через нейросеть Хопфилда Hopfild Фриланс 5 29.12.2015 21:33
Delphi: Написать программу для решения задачи Коммивояжера через нейросеть Хопфилда komivoyaz Фриланс 3 11.12.2015 12:09
Нейросеть. Обратное распространение ошибки NovGosh Помощь студентам 0 06.06.2012 17:58