Прогнозирование изменений валютного курса

Факторы и события, влияющие на обменный курс. Проведение поведенческой аналитики данных "Twitter" путем семантического анализа текста и выявления тональности сообщений. Особенности реализации лексического подхода и машинного обучения с учителем.

Рубрика Банковское, биржевое дело и страхование
Вид курсовая работа
Язык русский
Дата добавления 17.10.2016
Размер файла 791,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

library ('rms')

mod1b < - lrm (Z ~ positive + negative + neutral, data = reg)

print (mod1b)

return (q)

}

onlysearch < - function (searchterm) {

access_token < - "2420922668-JMDEnynORwSXe539IqP0XFEa6J1JQDY2bcVLJeh"

access_token_secret < - "1DDNxNdQJIwbrt6GyJx3BCTToPRCJ62oaOFupeWpzUb5W"

api_key < - "eLIc0KRqRqcJzRlPHYis5WYjU"

api_secret < - "aGB7fWofOoagYEBysqKQKKhB4iqOfpfFGFoHgwoQJ62qyG04C2"

setup_twitter_oauth (api_key,api_secret,access_token,access_token_secret)

list < - searchTwitter (searchterm, n=20, since = "2014-01-01")

df < - twListToDF (list)

df < - df [, order (names (df))]

df$created < - strftime (df$created, '%Y-%m-%d')

if (file. exists (paste (searchterm, '_stack. csv')) ==FALSE) write. csv (df, file=paste (searchterm, '_stack. csv'), row. names=F, fileEncoding = "UTF-8")

#merge the last extraction with storage file and remove duplicates

stack < - read. csv (file=paste (searchterm, '_stack. csv'), fileEncoding = "UTF-8")

stack < - rbind (stack, df)

stack < - subset (stack,! duplicated (stack$text))

write. csv (stack, file=paste (searchterm, '_stack. csv'), row. names=F, fileEncoding = "UTF-8")

#tweets evaluation function

}

Приложение 2. Реализация системы анализа настроений сообщений, основанной на машинном обучении.

# Загружаем библиотеки, готовим обучающую выборку #############

library (tm)

library (SnowballC)

library (e1071)

library (caret)

library (randomForest)

setwd ("/Users/sivakova/R/dissertation")

pos_tweets < - read. csv ("positive_tweets. csv", fileEncoding = "utf8", header = T, sep =",")

sentiment < - rep (1, nrow (pos_tweets))

text < - pos_tweets [,2]

pos_tweets < - data. frame (text, sentiment)

neg_tweets < - read. csv ("negative_tweets. csv", fileEncoding = "utf8", header = T, sep =",")

sentiment < - rep (-1, nrow (neg_tweets))

text < - neg_tweets [,2]

neg_tweets < - data. frame (text, sentiment)

neut_tweets < - read. csv ("neut. csv", fileEncoding = "utf8", header = T, sep ="; ")

sentiment < - rep (0, nrow (neut_tweets))

text < - neut_tweets [,2]

neut_tweets < - data. frame (text, sentiment)

training < - rbind (pos_tweets, neg_tweets, neut_tweets)

# Смотрим на данные ##########################################

# Проверяем размерность, инспектируем первое ревю

dim (training)

# Избавляемся от HTML тегов

cleanHTML < - function (x) {

return (gsub ("<. *? >", "", x))

}

# Оставляем только текст, убираем однобуквенные слова и слова нулевой длины

onlyText < - function (x) {

x < - gsub ("'s", "", x)

return (gsub (" [^а-яА-Я]", "", x))

}

# Токенизируем

tokenize < - function (x) {

x < - tolower (x)

x=system ("/Users/Sivakova/r/dissertation/mystem - cl", intern = TRUE, input = x)

x < - gsub (" [{}]", "", x)

x < - gsub (" (\\| [^] +)", "", x)

x < - gsub ("\\?", "", x)

x < - gsub ("\\s+", "", x)

x < - unlist (strsplit (x, split=" "))

}

# Создаем список стоп-слов

#stopWords < - stopwords ('ru')

# Обрабатываем все записи

rwsU < - sapply (1: nrow (training), function (x) {

# Прогресс-индикатор

if (x %% 1000 == 0) print (paste (x, "reviews processed"))

rw < - training [x,1]

rw < - cleanHTML (rw)

rw < - onlyText (rw)

rw < - tokenize (rw)

rw < - rw [nchar (rw) >1]

#rw < - rw [! rw %in% stopWords]

paste (rw, collapse=" ") # Снова склеиваем в текст

})

# Строим "Мешок слов" #######################################

train_vector < - VectorSource (rwsU) # Вектор

train_corpus < - Corpus (train_vector, #? Корпус

readerControl = list (language = "ru"))

train_bag < - DocumentTermMatrix (train_corpus, # Спец. матрица документы/термины

control=list (weight=presence, stemming=F))

# train_bag < - removeSparseTerms (train_bag, 0.9982) # Убираем слишком редкие термины

dim (train_bag)

# Смотрим на перечень наиболее распространенных терминов

hight_freq < - findFreqTerms (train_bag, 5, Inf)

inspect (train_bag [1: 4, hight_freq [1: 10]])

# Из специальной матрицы формируем обучающий датафрейм

l < - train_bag$nrow

train_df < - data. frame (inspect (train_bag [1: l,]))

train_df < - cbind (training$sentiment, train_df)

# Сокращенный датафрейм для статьи

# train_df < - data. frame (inspect (train_bag [1: 1000,hight_freq]))

# train_df < - cbind (training$sentiment [1: 1000], train_df)

names (train_df) [1] < - "sentiment"

vocab < - names (train_df) [-1] # Формируем словарь (для тестовой выборки)

# Убираем ненужное

# Выращиваем Случайный лес ##################################

t_start < - Sys. time ()

set. seed (3113)

####################################################

mat= create_matrix (rws, language="russian",

removeStopwords=FALSE, removeNumbers=F, removePunctuation = F,

stemWords=FALSE,)

container = create_container (mat, sentiment,

trainSize=1: 260, testSize=261: 323,virgin=FALSE)

models = train_models (container, algorithms=c (

"SVM",

"GLMNET",

"BAGGING",

"RF"

))

sentiment < - as. factor (training [,2])

nb<-naiveBayes (as. factor (sentiment) ~., train_df)

s < - predict (nb, newdata = train_df [,261: 323])

table (s, sentiment [261: 323])

###########################

results = classify_models (container, models)

table (as. numeric (as. numeric (sentiment [261: 323])), results [,"FORESTS_LABEL"])

recall_accuracy (as. numeric (as. numeric (sentiment [261: 323])), results [,"FORESTS_LABEL"])

table (as. numeric (as. numeric (sentiment [261: 323])), results [,"SVM_LABEL"])

recall_accuracy (as. numeric (as. numeric (sentiment [261: 323])), results [,"SVM_LABEL"])

table (as. numeric (as. numeric (sentiment [261: 323])), results [,"GLMNET_LABEL"])

recall_accuracy (as. numeric (as. numeric (sentiment [261: 323])), results [,"GLMNET_LABEL"])

table (as. numeric (as. numeric (sentiment [261: 323])), results [,"BAGGING_LABEL"])

recall_accuracy (as. numeric (as. numeric (sentiment [261: 323])), results [,"BAGGING_LABEL"])

control < - trainControl (method="cv", number=5)

# train the LVQ model

set. seed (7)

modelGbm < - train (as. factor (sentiment) ~., data=train_df, method="gbm", trControl=control, verbose=FALSE)

# train the SVM model

set. seed (7)

modelNb < - train (as. factor (sentiment) ~., data=train_df, trControl= control, method="nb")

#modelNb < - train (as. factor (sentiment) ~., data=train_df, method="awnb", trControl=control)

modelKf < - train (as. factor (sentiment) ~., data=train_df, method="rpart",

trControl=trainControl (method="cv", number=10, savePredictions = TRUE))

modelSvm < - train (as. factor (sentiment) ~., data=train_df,

method="svmLinear", trControl=control, scale = FALSE)

forest < - train (as. factor (sentiment) ~., data=train_df,

method="rf",

trControl=trainControl (method="cv",number=5),

prox=TRUE,

ntree=100,do. trace=10,allowParallel=TRUE)

# collect resamples

print (modelGbm)

print (modelSvm)

print (modelKf)

print (modelNb)

print (forest)

results < - resamples (modelGbm$results$Accuracy, modelSvm$results$Accuracy, modelKf$results$Accuracy, forest$results$Accuracy)

# control < - trainControl (method="repeatedcv", number=10, repeats=3)

#

# forest < - train (as. factor (sentiment) ~., data=train_df,

# method="rf",

# trControl=trainControl (method="cv",number=5),

# prox=TRUE,

# ntree=100,# do. trace=10,# allowParallel=TRUE)

#

#

# set. seed (3113)

# modelextraTrees < - train (as. factor (sentiment) ~., data=train_df, method="extraTrees",

# trControl=trainControl (method="cv",number=5),

# prox=TRUE,

# ntree=100,# do. trace=10,# allowParallel=TRUE)

#

#

# # train the GBM model

# set. seed (3113)

# modelGbm < - train (as. factor (sentiment) ~., data=train_df, method="gbm",

# trControl=control, verbose=FALSE)

#

#

# # train the SVM model

# set. seed (3113)

# modelSvm < - train (as. factor (sentiment) ~., data=train_df,

# method="svmRadial", trControl=control)

#

# # collect resamples

# results < - resamples (list (RF = forest, TREE = modelextraTrees, GBM=modelGbm, SVM=modelSvm))

# summarize the distributions

summary (results)

# boxplots of results

bwplot (results)

# dot plots of results

dotplot (results)

t_end < - Sys. time ()

# Смотрим на модель и на время обучения

t_end-t_start

print (forest)

# Загружаем и обрабатываем контрольную выборку ###############

testing < - read. csv ("test. csv", fileEncoding = "utf8", header = T, sep ="; ")

# Проверяем размерность

dim (testing)

# Обрабатываем тестовые ревю

rws < - sapply (1: nrow (testing), function (x) {

if (x %% 1000 == 0) print (paste (x, "tweet processed"))

rw < - testing [x,1]

rw < - cleanHTML (rw)

rw < - onlyText (rw)

rw < - tokenize (rw)

rw < - rw [nchar (rw) >1]

#rw < - rw [! rw %in% stopWords]

paste (rw, collapse=" ")

})

# Формируем вектор ревю, строим корпус, формируем матрицу документы/термины ###

test_vector < - VectorSource (rws)

test_corpus < - Corpus (test_vector,

readerControl = list (language = "ru"))

test_bag < - DocumentTermMatrix (test_corpus,

control=list (stemming=TRUE,

dictionary = vocab))

l < - nrow (test_bag)

test_df < - data. frame (inspect (test_bag [1: l,]))

sentiment < - rep (0, l)

test_df < - cbind (testing [1: l,1], sentiment, test_df [])

names (test_df) [1] < - "text"

# Прогнозируем сентимент ####################################

length (test_df [1,])

test_df [,2] < - predict (modelGbm, newdata = test_df [,-2])

table (test_df [,2], testing [,2])

testing [,2]

test_df [,2] < - predict (forest, newdata = test_df [-1])

# Сохраняем результата в csv

write. csv (test_df [,1: 2], file="Submission. csv",

quote=FALSE,

row. names=FALSE)

# Загружаем и обрабатываем все твиты ##########################

testing < - read. csv ("clean_tweets. csv", fileEncoding = "utf8", header = T, sep =",")

# Проверяем размерность

dim (testing)

# Обрабатываем тестовые ревю

rws1 < - sapply (1: nrow (testing), function (x) {

if (x %% 20 == 0) print (paste (x, "tweet processed"))

rw < - testing [x,2]

rw < - tokenize (rw)

rw < - rw [nchar (rw) >1]

rw < - rw [! rw %in% stopWords]

paste (rw, collapse=" ")

})

rw < - testing [7,2]

rw=system ("/Users/Sivakova/r/dissertation/mystem - cl", intern = TRUE, input = rw)

# Формируем вектор ревю, строим корпус, формируем матрицу документы/термины ###

test_vector < - VectorSource (rws)

test_corpus < - Corpus (test_vector,

readerControl = list (language = "ru"))

test_bag < - DocumentTermMatrix (test_corpus,

control=list (stemming=TRUE,

dictionary = vocab))

l < - nrow (test_bag)

test_df < - data. frame (inspect (test_bag [1: l,]))

sentiment < - rep (0, l)

test_df < - cbind (testing [1: l,2], sentiment, test_df [])

names (test_df) [1] < - "text"

# Прогнозируем сентимент ###################################

length (test_df [1,])

test_df [,2] < - predict (forest, newdata = test_df [,-2])

table (test_df [,2], testing [,2])

testing [,2]

test_df [,2] < - predict (forest, newdata = test_df [-1])

# Сохраняем результата в csv

write. csv (test_df [,1: 2], file="Submission. csv",

quote=FALSE,

row. names=FALSE)

Размещено на Allbest.ru


Подобные документы

  • Сущность валютного курса и связанных с ним понятий. Теории и модели валютного курса, их характеристика. Анализ воздействия динамики валютного курса на состояние экономики страны. Выбор режима обменного курса и его особенности в Республике Беларусь.

    курсовая работа [52,2 K], добавлен 28.09.2010

  • Понятие и функции валютного рынка. Факторы, оказывающие влияние на обменный курс. Анализ современного состояния валютного рынка Кыргызстана, перспективы его развития. Пути сохранении устойчивости курса и стабильности национальной валюты республики.

    курсовая работа [223,1 K], добавлен 09.02.2012

  • Понятие номинального валютного курса, основные функции и участники валютного рынка. Деятельность уполномоченных государственных органов, осуществляющих валютное регулирование в Республике Казахстан. Лицензирование обменных операций Национальным банком.

    презентация [1,8 M], добавлен 10.04.2012

  • Методы котировки валют. Значение обменного курса валют. Спрос на иностранную валюту. Условия для проведения политики фиксированного курса. Плавающий обменный курс. Система процентных ставок в развитых странах. Анализ обменного курса в Казахстане.

    курсовая работа [38,5 K], добавлен 03.05.2012

  • Сущность и особенности валютных операций. Основные методы прогнозирования обменного курса. Организация управления валютным риском в коммерческом банке и в его филиалах. Анализ системы валютного прогнозирования в Филиале ОАО Банк ВТБ в г. Липецке.

    курсовая работа [355,3 K], добавлен 03.02.2011

  • Теоретические основы международного валютного рынка Forex, его основные отличия и преимущества. Использование статистических методов в анализе валютного курса. Место пары "доллар - йена" на валютном рынке, факторы влияния при прогнозировании ее движения.

    курсовая работа [684,0 K], добавлен 16.12.2012

  • Сущность валютной политики государства, инструменты ее проведения. Факторы, влияющие на курс валюты. Современные тенденции развития валютного рынка России. Исследование динамики курса рубля. Новые подходы Банка России к регулированию национальной валюты.

    дипломная работа [302,8 K], добавлен 07.11.2017

  • Курс рубля в истории: кризис 1998г., факторы величины обменного курса, валютные коридоры и девальвация рубля. Валютно-курсовая политика и паритет покупательной способности, влияние на внешнюю торговлю и альтернативные режимы валютного курса в России.

    курсовая работа [410,9 K], добавлен 08.07.2008

  • Изучение механизма фиксации и корректировки курса валюты ЕВРО(EUR). Зависимость позиций единой европейской валюты от уровня развития и интеграции финансовых рынков. Реализация валютного опциона, виды опционных контрактов. Система валютного курса.

    реферат [97,4 K], добавлен 27.07.2010

  • Понятие и назначение валютного рынка, история и этапы его развития, закономерности данного процесса. Валютный курс и факторы, влияющие на его формирование, ревальвация и девальвация валюты. Центральный банк РФ как основной орган валютного регулирования.

    курсовая работа [54,8 K], добавлен 19.06.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.