2017-08-22 3 views
2

MLPRegressorを使用してデータセットをトレーニングしてテストしようとしていました。私は2つのデータセット(列車のデータセットとテストデータセット)を持っていますが、両方とも機能とラベルの列が全く同じです。ここに私のデータセットの例です:Scikit-learn MLPRegressor - 否定的な結果を予測する方法はありませんか?

Full,Id,Id & PPDB,Id & Words Sequence,Id & Synonyms,Id & Hypernyms,Id & Hyponyms,Gold Standard 
1.667,0.476,0.952,0.476,1.429,0.952,0.476,2.345 
3.056,1.111,1.667,1.111,3.056,1.389,1.111,1.9 
1.765,1.176,1.176,1.176,1.765,1.176,1.176,2.2 
0.714,0.714,0.714,0.714,0.714,0.714,0.714,0.0 
................ 

ここに私のコードは次のとおりです。

import pandas as pd 
import numpy as np 

from sklearn.neural_network import MLPRegressor 

randomseed = np.random.seed(0) 

datatraining = pd.read_csv("datatrain.csv") 

datatesting = pd.read_csv("datatest.csv") 

columns = ["Full","Id","Id & PPDB","Id & Words Sequence","Id & Synonyms","Id & Hypernyms","Id & Hyponyms"] 

labeltrain = datatraining["Gold Standard"].values 
featurestrain = datatraining[list(columns)].values 


labeltest = datatesting["Gold Standard"].values 
featurestest = datatesting[list(columns)].values 

X_train = featurestrain 
y_train = labeltrain 

X_test = featurestest 
y_test = labeltest 

mlp = MLPRegressor(solver='lbfgs', hidden_layer_sizes=50, max_iter=1000, learning_rate='constant', random_state=randomseed) 

mlp.fit(X_train, y_train) 

print('Accuracy training : {:.3f}'.format(mlp.score(X_train, y_train))) 
print 

predicting = mlp.predict(X_test) 
print predicting 
print 

そして、ここでは、予測の結果です:

[ 1.97553444 3.43401776 3.04097607 2.7015464 2.03777686 3.63274593 
    3.37826962 -0.60260337 0.41626517 3.5374289 3.66114929 3.244683 
    2.6313756 2.14243075 3.20841434 2.105238 4.9805092 4.00868273 
    2.45508505 4.53332828 3.41862096 3.35721078 3.23069344 3.72149434 
    4.9805092 2.61705563 1.55052494 -0.14135979 2.65875196 3.05328206 
    3.51127424 0.51076396 2.39947967 1.95916595 3.71520651 2.1526807 
    2.26438616 0.73249057 2.46888695 3.56976227 1.03109988 2.15894353 
    2.06396103 0.66133707 4.72861602 2.4592647 2.84176811 2.3157664 
    1.68426416 2.56022955 -0.00518545 1.67213609 0.6998739 3.25940136 
    3.25369266 3.88888542 1.9168694 2.26036302 3.97917769 2.00322903 
    3.03121106 3.29083723 0.6998739 4.33375678 0.6998739 2.71141538 
-4.23755447 3.958574 2.67765274 2.68715423 2.32714117 2.6500056 
    ........] 

私たちが見ることができるように、いくつかの否定的な結果があります。否定的な結果を予測しない方法は?また、私のデータセットはすべての正の値を含んでいます。

+2

あなたは一つの方法または予測値で、他の中で陽性の制限を課す必要がある、いくつかの良い読み取りがあります。だからあなたはあなたの質問を*なぜ否定的な結果を*から*否定的な結果*を予測しないか、より一般的には*予測の領域をどのように制約するか*を示しているのでしょうか? – Kanak

答えて

0

カテゴリ変数がないと仮定します。また、あなたはすべての正の価値を持っているという質問に言及しました。 SatandardSacler()を使用してデータを標準化しようとします。あなたのX_trainとy_trainをstandardizeのデータに使用してください。あなたのケースに基づいて、最適なパラメータ、fitスケーリングされたデータとモデルを初期化した後

from sklearn import preprocessing as pre 
... 
scaler = pre.StandardScaler() 
X_train_scaled = scaler.fit_transform(X_train) 
X_test_scaled = scaler.fit_transform(X_test) 

mlp.fit(X_train_scaled, y_train) 
... 
predicting = mlp.predict(X_test_scaled) 

これはそれを行う必要があります。それがどうなるか教えてください。

また、

https://stats.stackexchange.com/questions/189652/is-it-a-good-practice-to-always-scale-normalize-data-for-machine-learning https://stats.stackexchange.com/questions/7757/data-normalization-and-standardization-in-neural-networks

関連する問題