import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import datetime
train = pd.read_csv('train_file.csv')
test = pd.read_csv('test_file.csv')
submission = pd.read_csv('sample_submission.csv')
test_id = test['IDLink']
!pip3 install afinn
Requirement already satisfied: afinn in /usr/local/lib/python3.6/dist-packages (0.1)
from textblob import TextBlob
import nltk
nltk.download('stopwords')
nltk.download('punkt')
nltk.download('wordnet')
import re
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
stop = set(stopwords.words('english'))
[nltk_data] Downloading package stopwords to /root/nltk_data... [nltk_data] Package stopwords is already up-to-date! [nltk_data] Downloading package punkt to /root/nltk_data... [nltk_data] Package punkt is already up-to-date! [nltk_data] Downloading package wordnet to /root/nltk_data... [nltk_data] Package wordnet is already up-to-date!
from textblob import Word
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.preprocessing import LabelEncoder, StandardScaler,MinMaxScaler
from sklearn.model_selection import train_test_split
from scipy.sparse import hstack, csr_matrix
train.head()
| IDLink | Title | Headline | Source | Topic | PublishDate | GooglePlus | SentimentTitle | SentimentHeadline | |||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Tr3CMgRv1N | Obama Lays Wreath at Arlington National Cemetery | Obama Lays Wreath at Arlington National Cemete... | USA TODAY | obama | 2002-04-02 00:00:00 | -1 | -1 | -1 | 0.000000 | -0.053300 |
| 1 | Wc81vGp8qZ | A Look at the Health of the Chinese Economy | Tim Haywood, investment director business-unit... | Bloomberg | economy | 2008-09-20 00:00:00 | -1 | -1 | -1 | 0.208333 | -0.156386 |
| 2 | zNGH03CrZH | Nouriel Roubini: Global Economy Not Back to 2008 | Nouriel Roubini, NYU professor and chairman at... | Bloomberg | economy | 2012-01-28 00:00:00 | -1 | -1 | -1 | -0.425210 | 0.139754 |
| 3 | 3sM1H0W8ts | Finland GDP Expands In Q4 | Finland's economy expanded marginally in the t... | RTT News | economy | 2015-03-01 00:06:00 | -1 | -1 | -1 | 0.000000 | 0.026064 |
| 4 | wUbnxgvqaZ | Tourism, govt spending buoys Thai economy in J... | Tourism and public spending continued to boost... | The Nation - Thailand's English news | economy | 2015-03-01 00:11:00 | -1 | -1 | -1 | 0.000000 | 0.141084 |
train.describe()
| GooglePlus | SentimentTitle | SentimentHeadline | |||
|---|---|---|---|---|---|
| count | 55932.000000 | 55932.000000 | 55932.000000 | 55932.000000 | 55932.000000 |
| mean | 132.050329 | 4.551616 | 14.300132 | -0.006318 | -0.029577 |
| std | 722.931314 | 21.137177 | 76.651420 | 0.137569 | 0.143038 |
| min | -1.000000 | -1.000000 | -1.000000 | -0.838525 | -0.755355 |
| 25% | 0.000000 | 0.000000 | 0.000000 | -0.079057 | -0.116927 |
| 50% | 6.000000 | 0.000000 | 0.000000 | 0.000000 | -0.027277 |
| 75% | 37.000000 | 2.000000 | 4.000000 | 0.063969 | 0.057354 |
| max | 49211.000000 | 1267.000000 | 3716.000000 | 0.962354 | 0.964646 |
test.describe()
| GooglePlus | |||
|---|---|---|---|
| count | 37288.000000 | 37288.000000 | 37288.000000 |
| mean | 84.832654 | 2.895516 | 19.928181 |
| std | 420.063477 | 13.538942 | 225.443395 |
| min | -1.000000 | -1.000000 | -1.000000 |
| 25% | 0.000000 | 0.000000 | 0.000000 |
| 50% | 4.000000 | 0.000000 | 0.000000 |
| 75% | 28.000000 | 2.000000 | 4.000000 |
| max | 16598.000000 | 1016.000000 | 20341.000000 |
train.isna().sum()
IDLink 0 Title 0 Headline 0 Source 175 Topic 0 PublishDate 0 Facebook 0 GooglePlus 0 LinkedIn 0 SentimentTitle 0 SentimentHeadline 0 dtype: int64
test.isna().sum()
IDLink 0 Title 0 Headline 0 Source 101 Topic 0 PublishDate 0 Facebook 0 GooglePlus 0 LinkedIn 0 dtype: int64
train['Source'].mode()
0 Bloomberg dtype: object
train['Source'] = train['Source'].fillna('Bloomberg')
test['Source'] = test['Source'].fillna('Bloomberg')
Clean the Text : Remove unwanted characters and stop words
train['Text_Title'] = train['Title'] + ' ' + train['Source'] + ' ' + train['Topic']
test['Text_Title'] = test['Title'] + ' ' + test['Source'] + ' ' + test['Topic']
train['Text_Headline'] = train['Headline'] + ' ' + train['Source'] + ' ' + train['Topic']
test['Text_Headline'] = test['Headline'] + ' ' + test['Source'] + ' ' + test['Topic']
def clean_data(text):
text_token = word_tokenize(text)
filtered_text = ' '.join([w.lower() for w in text_token if w.lower() not in stop and len(w) > 2]) #Converting to lower cases and removing stop words
filtered_text = filtered_text.replace(r"[^a-zA-Z]+", '') #remove special characters
text_only = re.sub(r'\b\d+\b', '', filtered_text) #remove numbers
clean_text = text_only.replace(',', '').replace('.', '').replace(':', '')
return clean_text
def lemmatize(text):
text_token = word_tokenize(text)
lematized_text = ' '.join([Word(w).lemmatize() for w in text_token]) # Lematization
return lematized_text
train['Text_Title'][2]
'Nouriel Roubini: Global Economy Not Back to 2008 Bloomberg economy'
train['Text_Title'] = [clean_data(x) for x in train['Text_Title']]
test['Text_Title'] = [clean_data(x) for x in test['Text_Title']]
train['Text_Headline'] = [clean_data(x) for x in train['Text_Headline']]
test['Text_Headline'] = [clean_data(x) for x in test['Text_Headline']]
train['Text_Title'][2]
'nouriel roubini global economy back bloomberg economy'
# train['Text_Title'] = [lemmatize(x) for x in train['Text_Title']]
# test['Text_Title'] = [lemmatize(x) for x in test['Text_Title']]
# train['Text_Headline'] = [lemmatize(x) for x in train['Text_Headline']]
# test['Text_Headline'] = [lemmatize(x) for x in test['Text_Headline']]
# train['Text_Title'][2]
Vectorizing text
vectorizer = TfidfVectorizer(use_idf=True)
train_v_Title = vectorizer.fit_transform(train['Text_Title'])
test_v_Title = vectorizer.transform(test['Text_Title'])
vectorizer_ = TfidfVectorizer(use_idf=True)
train_v_Headline = vectorizer_.fit_transform(train['Text_Headline'])
test_v_Headline = vectorizer_.transform(test['Text_Headline'])
test_v_Headline.shape
(37288, 38787)
Sentiment Extraction with affin and textblob polarity and subjectivity
from afinn import Afinn
af = Afinn()
Title
train['pol_t'] = train['Title'].apply(lambda x: TextBlob(x).sentiment.polarity)
test['pol_t'] = test['Title'].apply(lambda x: TextBlob(x).sentiment.polarity)
train['sub_t'] = train['Title'].apply(lambda x: TextBlob(x).sentiment.subjectivity)
test['sub_t'] = test['Title'].apply(lambda x: TextBlob(x).sentiment.subjectivity)
train['aff_t'] = train['Title'].apply(lambda x: af.score(x))
test['aff_t'] = test['Title'].apply(lambda x: af.score(x))
Headline
train['pol_h'] = train['Headline'].apply(lambda x: TextBlob(x).sentiment.polarity)
test['pol_h'] = test['Headline'].apply(lambda x: TextBlob(x).sentiment.polarity)
train['sub_h'] = train['Headline'].apply(lambda x: TextBlob(x).sentiment.subjectivity)
test['sub_h'] = test['Headline'].apply(lambda x: TextBlob(x).sentiment.subjectivity)
train['aff_h'] = train['Headline'].apply(lambda x: af.score(x))
test['aff_h'] = test['Headline'].apply(lambda x: af.score(x))
Feature Engineering
Label Encode categorical Variables
encoder = LabelEncoder()
train['Topic'] = encoder.fit_transform(train['Topic'])
test['Topic'] = encoder.transform(test['Topic'])
total = train['Source'].to_list() + test['Source'].to_list()
total = encoder.fit_transform(total)
train['Source'] = encoder.transform(train['Source'])
test['Source'] = encoder.transform(test['Source'])
Processing the date time stamp
train["month_start"] = train["PublishDate"].apply(lambda x: 1 if int(x.split()[0].split(':')[0].split('-')[2])<= 7 else 0)
test["month_start"] = test["PublishDate"].apply(lambda x: 1 if int(x.split()[0].split(':')[0].split('-')[2])<= 7 else 0)
train["month_end"] = train["PublishDate"].apply(lambda x: 1 if int(x.split()[0].split(':')[0].split('-')[2])>= 24 else 0)
test["month_end"] = test["PublishDate"].apply(lambda x: 1 if int(x.split()[0].split(':')[0].split('-')[2]) >=24 else 0)
train["month_mid"] = train["PublishDate"].apply(lambda x: 1 if (int(x.split()[0].split(':')[0].split('-')[2]) < 24) and (int(x.split()[0].split(':')[0].split('-')[2]) > 7) else 0)
test["month_mid"] = test["PublishDate"].apply(lambda x: 1 if (int(x.split()[0].split(':')[0].split('-')[2]) < 24) and (int(x.split()[0].split(':')[0].split('-')[2]) > 7) else 0)
# Hour from date
train["hour"] = train["PublishDate"].apply(lambda x: x.split()[1].split(':')[0])
test["hour"] = test["PublishDate"].apply(lambda x: x.split()[1].split(':')[0])
#year from the date
train["year"] = train["PublishDate"].apply(lambda x: x.split()[0].split(':')[0].split('-')[0])
test["year"] = test["PublishDate"].apply(lambda x: x.split()[0].split(':')[0].split('-')[0])
#Month from the date
train["month"] = train["PublishDate"].apply(lambda x: x.split()[0].split(':')[0].split('-')[1])
test["month"] = test["PublishDate"].apply(lambda x: x.split()[0].split(':')[0].split('-')[1])
Plots
# Month distribution of SentimentTitle
plt.scatter(train['month'], train['SentimentTitle'],c='y')
plt.xlabel('month')
plt.ylabel('SentimentTitle')
Text(0, 0.5, 'SentimentTitle')
# Month distribution of SentimentTitle
plt.scatter(train['month'], train['SentimentHeadline'] ,c='y')
plt.xlabel('month')
plt.ylabel('SentimentHeadline')
Text(0, 0.5, 'SentimentHeadline')
# hour distribution of SentimentTitle
plt.scatter(train['hour'], train['SentimentTitle'],c='g')
plt.xlabel('hour')
plt.ylabel('SentimentTitle')
Text(0, 0.5, 'SentimentTitle')
# hour distribution of SentimentHeadline
plt.scatter(train['hour'], train['SentimentHeadline'],c= 'g')
plt.xlabel('hour')
plt.ylabel('SentimentHeadline')
Text(0, 0.5, 'SentimentHeadline')
#month start = yellow
plt.scatter(train['month'],train['SentimentHeadline'],c = train.month_start)
plt.xlabel('month')
plt.ylabel('sentiment Headline')
Text(0, 0.5, 'sentiment Headline')
#month mid = yellow
plt.scatter(train['month'],train['SentimentHeadline'],c = train.month_mid)
plt.xlabel('month')
plt.ylabel('sentiment Headline')
Text(0, 0.5, 'sentiment Headline')
#month end = yellow
plt.scatter(train['month'],train['SentimentHeadline'],c = train.month_end)
plt.xlabel('month')
plt.ylabel('sentiment Headline')
Text(0, 0.5, 'sentiment Headline')
Descriptive Variables
Standardising
scaler = StandardScaler()
cols = ['Source', 'Topic', 'Facebook', 'GooglePlus', 'LinkedIn','hour', 'year','month']
for col in cols:
train[col] = scaler.fit_transform(train[col].values.reshape(-1, 1))
test[col] = scaler.transform(test[col].values.reshape(-1, 1))
cols_t = ['Source', 'Topic', 'Facebook', 'LinkedIn', 'GooglePlus','pol_t','aff_t', 'sub_t', 'hour','year','month','month_start' ,'month_end','month_mid']
train_X1 = train[cols_t]
test_X1 = test[cols_t]
cols_h = ['Source', 'Topic', 'Facebook', 'GooglePlus', 'LinkedIn','aff_h','pol_h', 'sub_h', 'hour','year','month_start' ,'month_mid','month']
train_X2 = train[cols_h]
test_X2 = test[cols_h]
d= train_X2.copy()
d['target'] = train['SentimentHeadline']
import seaborn as sn
plt.figure(figsize = (16,5))
sn.heatmap(d.corr(), annot=True)
plt.show()
train_X2.head()
| Source | Topic | GooglePlus | aff_h | aff_t | pol_h | sub_h | hour | year | month_start | month_mid | month | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1.257700 | 0.841443 | -0.184044 | -0.262649 | -0.199608 | 2.0 | 0.0 | 0.000000 | 0.000000 | -1.699073 | -27.994016 | 1 | 0 | -0.312446 |
| 1 | -1.314091 | -1.108773 | -0.184044 | -0.262649 | -0.199608 | 0.0 | 0.0 | 0.100000 | 0.200000 | -1.699073 | -15.672447 | 0 | 1 | 0.753237 |
| 2 | -1.314091 | -1.108773 | -0.184044 | -0.262649 | -0.199608 | 0.0 | 0.0 | 0.000000 | 0.041667 | -1.699073 | -7.458068 | 0 | 0 | -0.951856 |
| 3 | 0.468412 | -1.108773 | -0.184044 | -0.262649 | -0.199608 | 0.0 | 1.0 | -0.166667 | 0.166667 | -1.699073 | -1.297284 | 1 | 0 | -0.525582 |
| 4 | 1.029071 | -1.108773 | -0.184044 | -0.262649 | -0.199608 | 1.0 | 0.0 | 0.133333 | 0.380556 | -1.699073 | -1.297284 | 1 | 0 | -0.525582 |
print(np.shape(train_X1))
print(np.shape(test_X1))
print(np.shape(train_X2))
print(np.shape(test_X2))
print(np.shape(train_v_Title))
print(np.shape(test_v_Title))
print(np.shape(train_v_Headline))
print(np.shape(test_v_Headline))
(55932, 15) (37288, 15) (55932, 14) (37288, 14) (55932, 25377) (37288, 25377) (55932, 38787) (37288, 38787)
type(train_v_Title)
scipy.sparse.csr.csr_matrix
train_X_Title = hstack([train_v_Title, csr_matrix(train_X1.values)]) #merging vectorised words and additional variables
test_X_Title = hstack([test_v_Title, csr_matrix(test_X1.values)])
y1 = train['SentimentTitle']
train_X_Headline = hstack([train_v_Headline, csr_matrix(train_X2.values)])
test_X_Headline = hstack([test_v_Headline, csr_matrix(test_X2.values)])
y2 = train['SentimentHeadline']
from sklearn.neural_network import MLPRegressor
mlp = MLPRegressor(hidden_layer_sizes=50,activation='tanh',batch_size = 160,alpha = 0.05,verbose = True,random_state = 1,warm_start = True,tol = 0.000001)
X_train, X_test, y_train, y_test = train_test_split(train_X_Headline, y2, test_size=0.2, random_state=42)
mlp.alpha = 0.2
mlp.batch_size = 412
mlp.activation= 'tanh'
mlp.fit(X_train, y_train)
Iteration 63, loss = 0.00743567 Iteration 64, loss = 0.00726868 Iteration 65, loss = 0.00723798 Iteration 66, loss = 0.00722085 Iteration 67, loss = 0.00723858 Iteration 68, loss = 0.00723238
/usr/local/lib/python3.6/dist-packages/sklearn/neural_network/_multilayer_perceptron.py:573: UserWarning: Training interrupted by user.
warnings.warn("Training interrupted by user.")
MLPRegressor(activation='tanh', alpha=0.2, batch_size=412, beta_1=0.9,
beta_2=0.999, early_stopping=False, epsilon=1e-08,
hidden_layer_sizes=50, learning_rate='constant',
learning_rate_init=0.001, max_fun=15000, max_iter=200,
momentum=0.9, n_iter_no_change=10, nesterovs_momentum=True,
power_t=0.5, random_state=1, shuffle=True, solver='adam',
tol=1e-06, validation_fraction=0.1, verbose=True, warm_start=True)
y_pred1 = mlp.predict(X_test)
y_pred2 = mlp.predict(X_train)
mae1 = mean_absolute_error(y_pred1, y_test)
mae2 = mean_absolute_error(y_pred2, y_train)
print('MAE test:', 1 - mae1)
print('MAE train:', 1 - mae2)
MAE test: 0.9222385602688256 MAE train: 0.9299610546514606
mlp1 = MLPRegressor(hidden_layer_sizes=20,activation='tanh',batch_size = 64,alpha = 0.02,verbose = True,random_state = 2,warm_start = True,tol = 0.000001)
X_train, X_test, y_train, y_test = train_test_split(train_X_Headline, y2, test_size=0.20, random_state=42)
mlp1.fit(X_train, y_train)
y_pred1 = mlp1.predict(X_train)
mae2 = mean_absolute_error(y_pred1, y_train)
print('MAE:', 1 - mae2)
MAE: 0.9045360123539832
/usr/local/lib/python3.6/dist-packages/sklearn/neural_network/_multilayer_perceptron.py:573: UserWarning: Training interrupted by user.
warnings.warn("Training interrupted by user.")
X_train, X_test, y_train, y_test = train_test_split(train_X_Headline, y2, test_size=0.25,random_state = 32)
import xgboost as xgb
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)
params = {
# Parameters that we are going to tune.
'max_depth':6,
'min_child_weight': 1,
'eta':.3,
'subsample': 1,
'colsample_bytree': 1,
# Other parameters
'objective':'reg:linear',
'eval_metric':"mae"
}
model = xgb.train(
params,
dtrain,
num_boost_round=999,
evals=[(dtest, "Test")],
early_stopping_rounds=10
)
[06:28:41] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror. [0] Test-mae:0.370408 Will train until Test-mae hasn't improved in 10 rounds. [1] Test-mae:0.262108 [2] Test-mae:0.191631 [3] Test-mae:0.149143 [4] Test-mae:0.12576 [5] Test-mae:0.112916 [6] Test-mae:0.106259 [7] Test-mae:0.102671 [8] Test-mae:0.100707 [9] Test-mae:0.099683 [10] Test-mae:0.098989 [11] Test-mae:0.09839 [12] Test-mae:0.097973 [13] Test-mae:0.097607 [14] Test-mae:0.097271 [15] Test-mae:0.096879 [16] Test-mae:0.096592 [17] Test-mae:0.096431 [18] Test-mae:0.096205 [19] Test-mae:0.095895 [20] Test-mae:0.095611 [21] Test-mae:0.095384 [22] Test-mae:0.094964 [23] Test-mae:0.094715 [24] Test-mae:0.094457 [25] Test-mae:0.094258 [26] Test-mae:0.093987 [27] Test-mae:0.093809 [28] Test-mae:0.09365 [29] Test-mae:0.093506 [30] Test-mae:0.093317 [31] Test-mae:0.093151 [32] Test-mae:0.092999 [33] Test-mae:0.092812 [34] Test-mae:0.092635 [35] Test-mae:0.092445 [36] Test-mae:0.092185 [37] Test-mae:0.092027 [38] Test-mae:0.091871 [39] Test-mae:0.091733 [40] Test-mae:0.091592 [41] Test-mae:0.091489 [42] Test-mae:0.091344 [43] Test-mae:0.09124 [44] Test-mae:0.091143 [45] Test-mae:0.091028 [46] Test-mae:0.090931 [47] Test-mae:0.090784 [48] Test-mae:0.090693 [49] Test-mae:0.090544 [50] Test-mae:0.090443 [51] Test-mae:0.090305 [52] Test-mae:0.090149 [53] Test-mae:0.09009 [54] Test-mae:0.08993 [55] Test-mae:0.089802 [56] Test-mae:0.089677 [57] Test-mae:0.089556 [58] Test-mae:0.089466 [59] Test-mae:0.089378 [60] Test-mae:0.089278 [61] Test-mae:0.089169 [62] Test-mae:0.089084 [63] Test-mae:0.088985 [64] Test-mae:0.088859 [65] Test-mae:0.088733 [66] Test-mae:0.088582 [67] Test-mae:0.088486 [68] Test-mae:0.088394 [69] Test-mae:0.08832 [70] Test-mae:0.088254 [71] Test-mae:0.088152 [72] Test-mae:0.08807 [73] Test-mae:0.087976 [74] Test-mae:0.087879 [75] Test-mae:0.087825 [76] Test-mae:0.087767 [77] Test-mae:0.087724 [78] Test-mae:0.087657 [79] Test-mae:0.087549 [80] Test-mae:0.087466 [81] Test-mae:0.087387 [82] Test-mae:0.087312 [83] Test-mae:0.087196 [84] Test-mae:0.087098 [85] Test-mae:0.087034 [86] Test-mae:0.086903 [87] Test-mae:0.086867 [88] Test-mae:0.086833 [89] Test-mae:0.086708 [90] Test-mae:0.086661 [91] Test-mae:0.086581 [92] Test-mae:0.086455 [93] Test-mae:0.086355 [94] Test-mae:0.086272 [95] Test-mae:0.08618 [96] Test-mae:0.086091 [97] Test-mae:0.08602 [98] Test-mae:0.085969 [99] Test-mae:0.085933 [100] Test-mae:0.085846 [101] Test-mae:0.085814 [102] Test-mae:0.085742 [103] Test-mae:0.085702 [104] Test-mae:0.085679 [105] Test-mae:0.085645 [106] Test-mae:0.085595 [107] Test-mae:0.08553 [108] Test-mae:0.085434 [109] Test-mae:0.085382 [110] Test-mae:0.085306 [111] Test-mae:0.085292 [112] Test-mae:0.085234 [113] Test-mae:0.08521 [114] Test-mae:0.085163 [115] Test-mae:0.085036 [116] Test-mae:0.085001 [117] Test-mae:0.084933 [118] Test-mae:0.084899 [119] Test-mae:0.084845 [120] Test-mae:0.084806 [121] Test-mae:0.084755 [122] Test-mae:0.084689 [123] Test-mae:0.08464 [124] Test-mae:0.08462 [125] Test-mae:0.084554 [126] Test-mae:0.084547 [127] Test-mae:0.084506 [128] Test-mae:0.084468 [129] Test-mae:0.084458 [130] Test-mae:0.084429 [131] Test-mae:0.084353 [132] Test-mae:0.084295 [133] Test-mae:0.084248 [134] Test-mae:0.084206 [135] Test-mae:0.084169 [136] Test-mae:0.084143 [137] Test-mae:0.084116 [138] Test-mae:0.084054 [139] Test-mae:0.083992 [140] Test-mae:0.083971 [141] Test-mae:0.083915 [142] Test-mae:0.083849 [143] Test-mae:0.083797 [144] Test-mae:0.08376 [145] Test-mae:0.083721 [146] Test-mae:0.083678 [147] Test-mae:0.083646 [148] Test-mae:0.083581 [149] Test-mae:0.083522 [150] Test-mae:0.083502 [151] Test-mae:0.083463 [152] Test-mae:0.083436 [153] Test-mae:0.083398 [154] Test-mae:0.083366 [155] Test-mae:0.083308 [156] Test-mae:0.083286 [157] Test-mae:0.083232 [158] Test-mae:0.083219 [159] Test-mae:0.083199 [160] Test-mae:0.083171 [161] Test-mae:0.083133 [162] Test-mae:0.083103 [163] Test-mae:0.08308 [164] Test-mae:0.083048 [165] Test-mae:0.083023 [166] Test-mae:0.082971 [167] Test-mae:0.08293 [168] Test-mae:0.082922 [169] Test-mae:0.082874 [170] Test-mae:0.082862 [171] Test-mae:0.082844 [172] Test-mae:0.082793 [173] Test-mae:0.082743 [174] Test-mae:0.08272 [175] Test-mae:0.082683 [176] Test-mae:0.082652 [177] Test-mae:0.082613 [178] Test-mae:0.082586 [179] Test-mae:0.082564 [180] Test-mae:0.082543 [181] Test-mae:0.082548 [182] Test-mae:0.082525 [183] Test-mae:0.082477 [184] Test-mae:0.082421 [185] Test-mae:0.082357 [186] Test-mae:0.082369 [187] Test-mae:0.082323 [188] Test-mae:0.082306 [189] Test-mae:0.082279 [190] Test-mae:0.08225 [191] Test-mae:0.082223 [192] Test-mae:0.082207 [193] Test-mae:0.082175 [194] Test-mae:0.082137 [195] Test-mae:0.082113 [196] Test-mae:0.082118 [197] Test-mae:0.08209 [198] Test-mae:0.082027 [199] Test-mae:0.082007 [200] Test-mae:0.081973 [201] Test-mae:0.081981 [202] Test-mae:0.081937 [203] Test-mae:0.081899 [204] Test-mae:0.081878 [205] Test-mae:0.081857 [206] Test-mae:0.081854 [207] Test-mae:0.081813 [208] Test-mae:0.081785 [209] Test-mae:0.081748 [210] Test-mae:0.08173 [211] Test-mae:0.081718 [212] Test-mae:0.081703 [213] Test-mae:0.081671 [214] Test-mae:0.081633 [215] Test-mae:0.081607 [216] Test-mae:0.081595 [217] Test-mae:0.081575 [218] Test-mae:0.081539 [219] Test-mae:0.081502 [220] Test-mae:0.081475 [221] Test-mae:0.081462 [222] Test-mae:0.081417 [223] Test-mae:0.08139 [224] Test-mae:0.081351 [225] Test-mae:0.081349 [226] Test-mae:0.081312 [227] Test-mae:0.081281 [228] Test-mae:0.081258 [229] Test-mae:0.081257 [230] Test-mae:0.081247 [231] Test-mae:0.081216 [232] Test-mae:0.081214 [233] Test-mae:0.081209 [234] Test-mae:0.081207 [235] Test-mae:0.081176 [236] Test-mae:0.081165 [237] Test-mae:0.081156 [238] Test-mae:0.081157 [239] Test-mae:0.081119 [240] Test-mae:0.0811 [241] Test-mae:0.081069 [242] Test-mae:0.081048 [243] Test-mae:0.08105 [244] Test-mae:0.081036 [245] Test-mae:0.081014 [246] Test-mae:0.080983 [247] Test-mae:0.080951 [248] Test-mae:0.0809 [249] Test-mae:0.08087 [250] Test-mae:0.080853 [251] Test-mae:0.080825 [252] Test-mae:0.080803 [253] Test-mae:0.080779 [254] Test-mae:0.08076 [255] Test-mae:0.080759 [256] Test-mae:0.080755 [257] Test-mae:0.080731 [258] Test-mae:0.080707 [259] Test-mae:0.080673 [260] Test-mae:0.080637 [261] Test-mae:0.080607 [262] Test-mae:0.080594 [263] Test-mae:0.080581 [264] Test-mae:0.080573 [265] Test-mae:0.080556 [266] Test-mae:0.080544 [267] Test-mae:0.080539 [268] Test-mae:0.080515 [269] Test-mae:0.080494 [270] Test-mae:0.080466 [271] Test-mae:0.080436 [272] Test-mae:0.080417 [273] Test-mae:0.080403 [274] Test-mae:0.080401 [275] Test-mae:0.080382 [276] Test-mae:0.080351 [277] Test-mae:0.080325 [278] Test-mae:0.08031 [279] Test-mae:0.080307 [280] Test-mae:0.080283 [281] Test-mae:0.080262 [282] Test-mae:0.080248 [283] Test-mae:0.080225 [284] Test-mae:0.080192 [285] Test-mae:0.080172 [286] Test-mae:0.080152 [287] Test-mae:0.080149 [288] Test-mae:0.080123 [289] Test-mae:0.080104 [290] Test-mae:0.0801 [291] Test-mae:0.080082 [292] Test-mae:0.080078 [293] Test-mae:0.080068 [294] Test-mae:0.080037 [295] Test-mae:0.08002 [296] Test-mae:0.080006 [297] Test-mae:0.079989 [298] Test-mae:0.079968 [299] Test-mae:0.079942 [300] Test-mae:0.079895 [301] Test-mae:0.079867 [302] Test-mae:0.079856 [303] Test-mae:0.079856 [304] Test-mae:0.07983 [305] Test-mae:0.079806 [306] Test-mae:0.079791 [307] Test-mae:0.079781 [308] Test-mae:0.079758 [309] Test-mae:0.079753 [310] Test-mae:0.079729 [311] Test-mae:0.079727 [312] Test-mae:0.07973 [313] Test-mae:0.079703 [314] Test-mae:0.079692 [315] Test-mae:0.079686 [316] Test-mae:0.079663 [317] Test-mae:0.079657 [318] Test-mae:0.079644 [319] Test-mae:0.079631 [320] Test-mae:0.079618 [321] Test-mae:0.0796 [322] Test-mae:0.079596 [323] Test-mae:0.079581 [324] Test-mae:0.079559 [325] Test-mae:0.079534 [326] Test-mae:0.079521 [327] Test-mae:0.079502 [328] Test-mae:0.079486 [329] Test-mae:0.079474 [330] Test-mae:0.079471 [331] Test-mae:0.079468 [332] Test-mae:0.07946 [333] Test-mae:0.079453 [334] Test-mae:0.079416 [335] Test-mae:0.079402 [336] Test-mae:0.079392 [337] Test-mae:0.079384 [338] Test-mae:0.079374 [339] Test-mae:0.079382 [340] Test-mae:0.079368 [341] Test-mae:0.079365 [342] Test-mae:0.079342 [343] Test-mae:0.079331 [344] Test-mae:0.07933 [345] Test-mae:0.079314 [346] Test-mae:0.079308 [347] Test-mae:0.079289 [348] Test-mae:0.079274 [349] Test-mae:0.079266 [350] Test-mae:0.079243 [351] Test-mae:0.079207 [352] Test-mae:0.079189 [353] Test-mae:0.079165 [354] Test-mae:0.079145 [355] Test-mae:0.079118 [356] Test-mae:0.079134 [357] Test-mae:0.079117 [358] Test-mae:0.079101 [359] Test-mae:0.079102 [360] Test-mae:0.079084 [361] Test-mae:0.079085 [362] Test-mae:0.07908 [363] Test-mae:0.079067 [364] Test-mae:0.079053 [365] Test-mae:0.079036 [366] Test-mae:0.079015 [367] Test-mae:0.079014 [368] Test-mae:0.079018 [369] Test-mae:0.078996 [370] Test-mae:0.078991 [371] Test-mae:0.078992 [372] Test-mae:0.078986 [373] Test-mae:0.078976 [374] Test-mae:0.078946 [375] Test-mae:0.07894 [376] Test-mae:0.078955 [377] Test-mae:0.078943 [378] Test-mae:0.078935 [379] Test-mae:0.078903 [380] Test-mae:0.078891 [381] Test-mae:0.078878 [382] Test-mae:0.07888 [383] Test-mae:0.078863 [384] Test-mae:0.078849 [385] Test-mae:0.078846 [386] Test-mae:0.078849 [387] Test-mae:0.078842 [388] Test-mae:0.078846 [389] Test-mae:0.078832 [390] Test-mae:0.078837 [391] Test-mae:0.078836 [392] Test-mae:0.078813 [393] Test-mae:0.078807 [394] Test-mae:0.078785 [395] Test-mae:0.078747 [396] Test-mae:0.078744 [397] Test-mae:0.07873 [398] Test-mae:0.078714 [399] Test-mae:0.078699 [400] Test-mae:0.078696 [401] Test-mae:0.078686 [402] Test-mae:0.078682 [403] Test-mae:0.078677 [404] Test-mae:0.078676 [405] Test-mae:0.078677 [406] Test-mae:0.078673 [407] Test-mae:0.078653 [408] Test-mae:0.078653 [409] Test-mae:0.078642 [410] Test-mae:0.07862 [411] Test-mae:0.078612 [412] Test-mae:0.078602 [413] Test-mae:0.078573 [414] Test-mae:0.078561 [415] Test-mae:0.078553 [416] Test-mae:0.078547 [417] Test-mae:0.078542 [418] Test-mae:0.078533 [419] Test-mae:0.078534 [420] Test-mae:0.078511 [421] Test-mae:0.078485 [422] Test-mae:0.078481 [423] Test-mae:0.078475 [424] Test-mae:0.078462 [425] Test-mae:0.078442 [426] Test-mae:0.07841 [427] Test-mae:0.078396 [428] Test-mae:0.078382 [429] Test-mae:0.078372 [430] Test-mae:0.07835 [431] Test-mae:0.078343 [432] Test-mae:0.078332 [433] Test-mae:0.07831 [434] Test-mae:0.078295 [435] Test-mae:0.078287 [436] Test-mae:0.078261 [437] Test-mae:0.078266 [438] Test-mae:0.078255 [439] Test-mae:0.078255 [440] Test-mae:0.078241 [441] Test-mae:0.078236 [442] Test-mae:0.078239 [443] Test-mae:0.078239 [444] Test-mae:0.078221 [445] Test-mae:0.078222 [446] Test-mae:0.078203 [447] Test-mae:0.07821 [448] Test-mae:0.078218 [449] Test-mae:0.078213 [450] Test-mae:0.078216 [451] Test-mae:0.078211 [452] Test-mae:0.078204 [453] Test-mae:0.078186 [454] Test-mae:0.078173 [455] Test-mae:0.078173 [456] Test-mae:0.078172 [457] Test-mae:0.07815 [458] Test-mae:0.078148 [459] Test-mae:0.078121 [460] Test-mae:0.078111 [461] Test-mae:0.078098 [462] Test-mae:0.078106 [463] Test-mae:0.078091 [464] Test-mae:0.078089 [465] Test-mae:0.078088 [466] Test-mae:0.078069 [467] Test-mae:0.078054 [468] Test-mae:0.078051 [469] Test-mae:0.078048 [470] Test-mae:0.078041 [471] Test-mae:0.078036 [472] Test-mae:0.078029 [473] Test-mae:0.078017 [474] Test-mae:0.078018 [475] Test-mae:0.07799 [476] Test-mae:0.077985 [477] Test-mae:0.077976 [478] Test-mae:0.077972 [479] Test-mae:0.077952 [480] Test-mae:0.077942 [481] Test-mae:0.077955 [482] Test-mae:0.077938 [483] Test-mae:0.077937 [484] Test-mae:0.077936 [485] Test-mae:0.07793 [486] Test-mae:0.077931 [487] Test-mae:0.077912 [488] Test-mae:0.077911 [489] Test-mae:0.077909 [490] Test-mae:0.077887 [491] Test-mae:0.077888 [492] Test-mae:0.077872 [493] Test-mae:0.077856 [494] Test-mae:0.07784 [495] Test-mae:0.077832 [496] Test-mae:0.077826 [497] Test-mae:0.077837 [498] Test-mae:0.077821 [499] Test-mae:0.077809 [500] Test-mae:0.077806 [501] Test-mae:0.077817 [502] Test-mae:0.077802 [503] Test-mae:0.0778 [504] Test-mae:0.07779 [505] Test-mae:0.077777 [506] Test-mae:0.077779 [507] Test-mae:0.077775 [508] Test-mae:0.077797 [509] Test-mae:0.077794 [510] Test-mae:0.077779 [511] Test-mae:0.077781 [512] Test-mae:0.077792 [513] Test-mae:0.077794 [514] Test-mae:0.077794 [515] Test-mae:0.077786 [516] Test-mae:0.077779 [517] Test-mae:0.077759 [518] Test-mae:0.077756 [519] Test-mae:0.07775 [520] Test-mae:0.077743 [521] Test-mae:0.077739 [522] Test-mae:0.077728 [523] Test-mae:0.077714 [524] Test-mae:0.07771 [525] Test-mae:0.077705 [526] Test-mae:0.077703 [527] Test-mae:0.077681 [528] Test-mae:0.077665 [529] Test-mae:0.077665 [530] Test-mae:0.077657 [531] Test-mae:0.077646 [532] Test-mae:0.077646 [533] Test-mae:0.07762 [534] Test-mae:0.077623 [535] Test-mae:0.077597 [536] Test-mae:0.077578 [537] Test-mae:0.077578 [538] Test-mae:0.07757 [539] Test-mae:0.077551 [540] Test-mae:0.077551 [541] Test-mae:0.07754 [542] Test-mae:0.077535 [543] Test-mae:0.077535 [544] Test-mae:0.077527 [545] Test-mae:0.077523 [546] Test-mae:0.077518 [547] Test-mae:0.077505 [548] Test-mae:0.077498 [549] Test-mae:0.07749 [550] Test-mae:0.077485 [551] Test-mae:0.077475 [552] Test-mae:0.077479 [553] Test-mae:0.077482 [554] Test-mae:0.077466 [555] Test-mae:0.077468 [556] Test-mae:0.077459 [557] Test-mae:0.077465 [558] Test-mae:0.077452 [559] Test-mae:0.07745 [560] Test-mae:0.077445 [561] Test-mae:0.077428 [562] Test-mae:0.077409 [563] Test-mae:0.077394 [564] Test-mae:0.077377 [565] Test-mae:0.077357 [566] Test-mae:0.077343 [567] Test-mae:0.077331 [568] Test-mae:0.07732 [569] Test-mae:0.077322 [570] Test-mae:0.077328 [571] Test-mae:0.077326 [572] Test-mae:0.077302 [573] Test-mae:0.077286 [574] Test-mae:0.077285 [575] Test-mae:0.077279 [576] Test-mae:0.077273 [577] Test-mae:0.077263 [578] Test-mae:0.07727 [579] Test-mae:0.077266 [580] Test-mae:0.077259 [581] Test-mae:0.077256 [582] Test-mae:0.077255 [583] Test-mae:0.077246 [584] Test-mae:0.077244 [585] Test-mae:0.077244 [586] Test-mae:0.077232 [587] Test-mae:0.07723 [588] Test-mae:0.07722 [589] Test-mae:0.077223 [590] Test-mae:0.077195 [591] Test-mae:0.077184 [592] Test-mae:0.077182 [593] Test-mae:0.077178 [594] Test-mae:0.077164 [595] Test-mae:0.07717 [596] Test-mae:0.077173 [597] Test-mae:0.077173 [598] Test-mae:0.077154 [599] Test-mae:0.077148 [600] Test-mae:0.077131 [601] Test-mae:0.077121 [602] Test-mae:0.077118 [603] Test-mae:0.077125 [604] Test-mae:0.077109 [605] Test-mae:0.07711 [606] Test-mae:0.077104 [607] Test-mae:0.077113 [608] Test-mae:0.077106 [609] Test-mae:0.077106 [610] Test-mae:0.077096 [611] Test-mae:0.077081 [612] Test-mae:0.077078 [613] Test-mae:0.077075 [614] Test-mae:0.077062 [615] Test-mae:0.077053 [616] Test-mae:0.077054 [617] Test-mae:0.077046 [618] Test-mae:0.077034 [619] Test-mae:0.077032 [620] Test-mae:0.077029 [621] Test-mae:0.077018 [622] Test-mae:0.077007 [623] Test-mae:0.076986 [624] Test-mae:0.076982 [625] Test-mae:0.076979 [626] Test-mae:0.076981 [627] Test-mae:0.076974 [628] Test-mae:0.076973 [629] Test-mae:0.076971 [630] Test-mae:0.076964 [631] Test-mae:0.076964 [632] Test-mae:0.076962 [633] Test-mae:0.076961 [634] Test-mae:0.076958 [635] Test-mae:0.076958 [636] Test-mae:0.076946 [637] Test-mae:0.076946 [638] Test-mae:0.076954 [639] Test-mae:0.076946 [640] Test-mae:0.076939 [641] Test-mae:0.076932 [642] Test-mae:0.076922 [643] Test-mae:0.076911 [644] Test-mae:0.076892 [645] Test-mae:0.076889 [646] Test-mae:0.076885 [647] Test-mae:0.076889 [648] Test-mae:0.076869 [649] Test-mae:0.07686 [650] Test-mae:0.076849 [651] Test-mae:0.076846 [652] Test-mae:0.076843 [653] Test-mae:0.076839 [654] Test-mae:0.076834 [655] Test-mae:0.07684 [656] Test-mae:0.076839 [657] Test-mae:0.076847 [658] Test-mae:0.076859 [659] Test-mae:0.07684 [660] Test-mae:0.076839 [661] Test-mae:0.076822 [662] Test-mae:0.076812 [663] Test-mae:0.076822 [664] Test-mae:0.07683 [665] Test-mae:0.076817 [666] Test-mae:0.076809 [667] Test-mae:0.076806 [668] Test-mae:0.076799 [669] Test-mae:0.076806 [670] Test-mae:0.076801 [671] Test-mae:0.076793 [672] Test-mae:0.076802 [673] Test-mae:0.076799 [674] Test-mae:0.076781 [675] Test-mae:0.076775 [676] Test-mae:0.076771 [677] Test-mae:0.076772 [678] Test-mae:0.076802 [679] Test-mae:0.076805 [680] Test-mae:0.076799 [681] Test-mae:0.076793 [682] Test-mae:0.076788 [683] Test-mae:0.076782 [684] Test-mae:0.076761 [685] Test-mae:0.076763 [686] Test-mae:0.076764 [687] Test-mae:0.076763 [688] Test-mae:0.076758 [689] Test-mae:0.076761 [690] Test-mae:0.076756 [691] Test-mae:0.076761 [692] Test-mae:0.076745 [693] Test-mae:0.07675 [694] Test-mae:0.076732 [695] Test-mae:0.076716 [696] Test-mae:0.076706 [697] Test-mae:0.076712 [698] Test-mae:0.076709 [699] Test-mae:0.07671 [700] Test-mae:0.076704 [701] Test-mae:0.076691 [702] Test-mae:0.076692 [703] Test-mae:0.076674 [704] Test-mae:0.076676 [705] Test-mae:0.076666 [706] Test-mae:0.076669 [707] Test-mae:0.076672 [708] Test-mae:0.076665 [709] Test-mae:0.076664 [710] Test-mae:0.076667 [711] Test-mae:0.076659 [712] Test-mae:0.076643 [713] Test-mae:0.076645 [714] Test-mae:0.076649 [715] Test-mae:0.076649 [716] Test-mae:0.07665 [717] Test-mae:0.076649 [718] Test-mae:0.076649 [719] Test-mae:0.076647 [720] Test-mae:0.076642 [721] Test-mae:0.076649 [722] Test-mae:0.076661 [723] Test-mae:0.07665 [724] Test-mae:0.07665 [725] Test-mae:0.076647 [726] Test-mae:0.076642 [727] Test-mae:0.076634 [728] Test-mae:0.076633 [729] Test-mae:0.076624 [730] Test-mae:0.076612 [731] Test-mae:0.07661 [732] Test-mae:0.076607 [733] Test-mae:0.076595 [734] Test-mae:0.076597 [735] Test-mae:0.076596 [736] Test-mae:0.076588 [737] Test-mae:0.076572 [738] Test-mae:0.076569 [739] Test-mae:0.076578 [740] Test-mae:0.076579 [741] Test-mae:0.076562 [742] Test-mae:0.076554 [743] Test-mae:0.076548 [744] Test-mae:0.076544 [745] Test-mae:0.07654 [746] Test-mae:0.076532 [747] Test-mae:0.076528 [748] Test-mae:0.076524 [749] Test-mae:0.076527 [750] Test-mae:0.076519 [751] Test-mae:0.076522 [752] Test-mae:0.076517 [753] Test-mae:0.07651 [754] Test-mae:0.076511 [755] Test-mae:0.076503 [756] Test-mae:0.076517 [757] Test-mae:0.076522 [758] Test-mae:0.076515 [759] Test-mae:0.076507 [760] Test-mae:0.076515 [761] Test-mae:0.076512 [762] Test-mae:0.076506 [763] Test-mae:0.076497 [764] Test-mae:0.076484 [765] Test-mae:0.076485 [766] Test-mae:0.076488 [767] Test-mae:0.076495 [768] Test-mae:0.076497 [769] Test-mae:0.076488 [770] Test-mae:0.076485 [771] Test-mae:0.076486 [772] Test-mae:0.076486 [773] Test-mae:0.076476 [774] Test-mae:0.076475 [775] Test-mae:0.076477 [776] Test-mae:0.07648 [777] Test-mae:0.076489 [778] Test-mae:0.076486 [779] Test-mae:0.076484 [780] Test-mae:0.07648 [781] Test-mae:0.076477 [782] Test-mae:0.076467 [783] Test-mae:0.07646 [784] Test-mae:0.076448 [785] Test-mae:0.076453 [786] Test-mae:0.07646 [787] Test-mae:0.076448 [788] Test-mae:0.076449 [789] Test-mae:0.076437 [790] Test-mae:0.076427 [791] Test-mae:0.076425 [792] Test-mae:0.076423 [793] Test-mae:0.076422 [794] Test-mae:0.076421 [795] Test-mae:0.076416 [796] Test-mae:0.076403 [797] Test-mae:0.076391 [798] Test-mae:0.076383 [799] Test-mae:0.076385 [800] Test-mae:0.076383 [801] Test-mae:0.076389 [802] Test-mae:0.076378 [803] Test-mae:0.076378 [804] Test-mae:0.076378 [805] Test-mae:0.07638 [806] Test-mae:0.076378 [807] Test-mae:0.076373 [808] Test-mae:0.076376 [809] Test-mae:0.076358 [810] Test-mae:0.076354 [811] Test-mae:0.07635 [812] Test-mae:0.076344 [813] Test-mae:0.076347 [814] Test-mae:0.076345 [815] Test-mae:0.076343 [816] Test-mae:0.076342 [817] Test-mae:0.07633 [818] Test-mae:0.076329 [819] Test-mae:0.076323 [820] Test-mae:0.07632 [821] Test-mae:0.076314 [822] Test-mae:0.076296 [823] Test-mae:0.076292 [824] Test-mae:0.076291 [825] Test-mae:0.076292 [826] Test-mae:0.076285 [827] Test-mae:0.076272 [828] Test-mae:0.076263 [829] Test-mae:0.076275 [830] Test-mae:0.076283 [831] Test-mae:0.076278 [832] Test-mae:0.076258 [833] Test-mae:0.076254 [834] Test-mae:0.076258 [835] Test-mae:0.076257 [836] Test-mae:0.076244 [837] Test-mae:0.076249 [838] Test-mae:0.076244 [839] Test-mae:0.076237 [840] Test-mae:0.076229 [841] Test-mae:0.076227 [842] Test-mae:0.076231 [843] Test-mae:0.076231 [844] Test-mae:0.076224 [845] Test-mae:0.076221 [846] Test-mae:0.076223 [847] Test-mae:0.07622 [848] Test-mae:0.076217 [849] Test-mae:0.076214 [850] Test-mae:0.076214 [851] Test-mae:0.076212 [852] Test-mae:0.076183 [853] Test-mae:0.076187 [854] Test-mae:0.076182 [855] Test-mae:0.076179 [856] Test-mae:0.076169 [857] Test-mae:0.076163 [858] Test-mae:0.076157 [859] Test-mae:0.076144 [860] Test-mae:0.076135 [861] Test-mae:0.076134 [862] Test-mae:0.076138 [863] Test-mae:0.07614 [864] Test-mae:0.076131 [865] Test-mae:0.076124 [866] Test-mae:0.076118 [867] Test-mae:0.07612 [868] Test-mae:0.076115 [869] Test-mae:0.076112 [870] Test-mae:0.07611 [871] Test-mae:0.076103 [872] Test-mae:0.076099 [873] Test-mae:0.076098 [874] Test-mae:0.076091 [875] Test-mae:0.07609 [876] Test-mae:0.076102 [877] Test-mae:0.076102 [878] Test-mae:0.076096 [879] Test-mae:0.076089 [880] Test-mae:0.076091 [881] Test-mae:0.076092 [882] Test-mae:0.076087 [883] Test-mae:0.07608 [884] Test-mae:0.076078 [885] Test-mae:0.076078 [886] Test-mae:0.076082 [887] Test-mae:0.076075 [888] Test-mae:0.076078 [889] Test-mae:0.076075 [890] Test-mae:0.076072 [891] Test-mae:0.076071 [892] Test-mae:0.076062 [893] Test-mae:0.076064 [894] Test-mae:0.076058 [895] Test-mae:0.076048 [896] Test-mae:0.076052 [897] Test-mae:0.076051 [898] Test-mae:0.076051 [899] Test-mae:0.076048 [900] Test-mae:0.076043 [901] Test-mae:0.076044 [902] Test-mae:0.07604 [903] Test-mae:0.076043 [904] Test-mae:0.076042 [905] Test-mae:0.076044 [906] Test-mae:0.076045 [907] Test-mae:0.076052 [908] Test-mae:0.076043 [909] Test-mae:0.076032 [910] Test-mae:0.076032 [911] Test-mae:0.076033 [912] Test-mae:0.076038 [913] Test-mae:0.076036 [914] Test-mae:0.076041 [915] Test-mae:0.076047 [916] Test-mae:0.076057 [917] Test-mae:0.076044 [918] Test-mae:0.076044 [919] Test-mae:0.076046 Stopping. Best iteration: [909] Test-mae:0.076032
y_pred1 = model.predict(dtest)
y_pred2 = model.predict(dtrain)
mae1 = mean_absolute_error(y_pred1, y_test)
mae2 = mean_absolute_error(y_pred2, y_train)
print('MAE test:', 1 - mae1)
print('MAE train:', 1 - mae2)
MAE test: 0.9239536161775356 MAE train: 0.9579982611245333
dtest_h = xgb.DMatrix(test_X_Headline)
headline = model.predict(dtest_h)
headline
array([-0.06908184, 0.01023591, -0.11381304, ..., -0.09366286,
0.04553461, -0.04823256], dtype=float32)
from sklearn.svm import LinearSVR
from sklearn.metrics import mean_absolute_error
#Title
X_train, X_test, y_train, y_test = train_test_split(train_X_Title, y1, test_size=0.15, random_state=32)
clf1 = LinearSVR(C=0.148,max_iter=20000)
clf1.fit(X_train, y_train)
y_pred1 = clf1.predict(X_test)
mae1 = mean_absolute_error(y_pred1, y_test)
print('MAE for test data :', 1 - mae1)
MAE for test data : 0.9443994994636407
mae1
0.05560050053635933
#Headline
X_train, X_test, y_train, y_test = train_test_split(train_X_Headline, y2, test_size=0.15, random_state=32)
clf2 = LinearSVR(C=0.14,max_iter=20000,tol = 0.00001)
clf2.fit(X_train, y_train)
y_pred2 = clf2.predict(X_test)
y_ = clf2.predict(X_train)
mae2 = mean_absolute_error(y_pred2, y_test)
print('MAE test data:', 1 - mae2)
print('MAE Train',1 - mean_absolute_error(y_, y_train))
MAE test data: 0.9313123759844782 MAE Train 0.954211609292743
/usr/local/lib/python3.6/dist-packages/sklearn/svm/_base.py:947: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations. "the number of iterations.", ConvergenceWarning)
mae2
0.06868762401552173
print('MAE:', 1 - ((0.4 * mae1) + (0.6 * mae2)))
MAE: 0.9365472253761432
title = clf1.predict(test_X_Title)
headline = clf2.predict(test_X_Headline)
df = pd.DataFrame()
df['IDLink'] = test_id
df['SentimentTitle'] = title
df['SentimentHeadline'] = headline
df.to_csv('submit_SVR.csv', index=False)