2016-12-21 22 views
1

python scikit-learn linear regressionを使って次の値を予測するコードが見つかりました。データの配列から予測する方法-python scikit learn pandas

私は単一のデータを予測することができますが、実際には6つの値を予測し、6つの値の予測を出力する必要があります。

predicted_value = {9,10,11,12,13,14,15} 

result = linear_model_main(X, Y, predicted_value) 
print('Constant Value: '.format(result['intercept'])) 
print('Coefficient: '.format(result['coefficient'])) 
print('Predicted Value: '.format(result['predicted_value'])) 
print('Accuracy: '.format(result['accuracy'])) 

エラーメッセージは次のとおりです:

Traceback (most recent call last): 
File "C:Python34\data\cp.py", line 28, in <module> 
result = linear_model_main(X, Y, predicted_value) 
File "C:Python34\data\cp.py", line 22, in linear_model_main 
predict_outcome = regr.predict(predict_value) 
File "C:\Python34\lib\site-packages\sklearn\linear_model\base.py", line 200, in predict return self._decision_function(X) 
File "C:\Python34\lib\site-packages\sklearn\linear_model\base.py", line 183, in _decision_function 
X = check_array(X, accept_sparse=['csr', 'csc', 'coo']) 
File "C:\Python34\lib\site-packages\sklearn\utils\validation.py", line 393, in check_array array = array.astype(np.float64) 
TypeError: float() argument must be a string or a number, not 'set' 

C:\> 

predicted_value = 9,10,11,12,13,14,15 

result = linear_model_main(X, Y, predicted_value) 
print('Constant Value: '.format(result['intercept'])) 
print('Coefficient: '.format(result['coefficient'])) 
print('Predicted Value: '.format(result['predicted_value'])) 
print('Accuracy: '.format(result['accuracy'])) 
ここ

は、私がこのようにやってみましたコード

def linear_model_main(x_parameters, y_parameters, predict_value): 
    # Create linear regression object 
    regr = linear_model.LinearRegression()< 
    regr.fit(x_parameters, y_parameters) 
    # noinspection PyArgumentList 
    predict_outcome = regr.predict(predict_value) 
    score = regr.score(X, Y) 
    predictions = {'intercept': regr.intercept_, 'coefficient': regr.coef_, 'predicted_value': predict_outcome, 'accuracy' : score} 
    return predictions 

predicted_value = 9 #I NEED TO PREDICT 9,10,11,12,13,14,15 

result = linear_model_main(X, Y, predicted_value) 
print('Constant Value: {0}'.format(result['intercept'])) 
print('Coefficient: {0}'.format(result['coefficient'])) 
print('Predicted Value: {0}'.format(result['predicted_value'])) 
print('Accuracy: {0}'.format(result['accuracy'])) 

です

は、これらのエラー

C:\Python34\lib\site-packages\sklearn\utils\validation.py:386: DeprecationWarnin 
g: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0 
.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample. 
DeprecationWarning) 
Traceback (most recent call last): 
    File "C:Python34\data\cp.py", line 28, in <module> 
    result = linear_model_main(X, Y, predicted_value) 
    File "C:Python34\data\cp.py", line 22, in linear_model_main 
predict_outcome = regr.predict(predict_value) 
    File "C:\Python34\lib\site-packages\sklearn\linear_model\base.py", line 200, in predict return self._decision_function(X) 
    File "C:\Python34\lib\site-packages\sklearn\linear_model\base.py", line 185, in _decision_function dense_output=True) + self.intercept_ 
    File "C:\Python34\lib\site-packages\sklearn\utils\extmath.py", line 184, in safe_sparse_dot return fast_dot(a, b) 
    ValueError: shapes (1,3) and (1,1) not aligned: 3 (dim 1) != 1 (dim 0) 

C:\> 

を持って、私はこのような変更を加えた場合:

predicted_value = 9 
result = linear_model_main(X, Y, predicted_value) 
print('Constant Value: {1}'.format(result['intercept'])) 
print('Coefficient: {1}'.format(result['coefficient'])) 
print('Predicted Value: {}'.format(result['predicted_value'])) 
print('Accuracy: {1}'.format(result['accuracy'])) 

それが再び私はそれが限界を横切るというエラー得られます。何をする必要がありますか?

+0

..私は単にそれは私に対応する値を予測する値9を与える場合 –

+0

iは、エラーメッセージ –

答えて

1

の行ごとに予測しようとしているラベルが含まれている必要があるため、有益な何かをしていないようでは実施例です。私はあなたの関数を構築していない、ちょうどあなたに適切な構文を示した。 fitにデータを正しく渡していないようです。

import numpy as np 
from sklearn import linear_model 

x = np.random.uniform(-2,2,101) 
y = 2*x+1 + np.random.normal(0,1, len(x)) 

#Note that x and y must be in specific shape. 

x = x.reshape(-1,1) 
y = y.reshape(-1,1) 


LM = linear_model.LinearRegression().fit(x,y) #Note I am passing in x and y in column shape 

predict_me = np.array([ 9,10,11,12,13,14,15]) 

predict_me = predict_me.reshape(-1,1) 

score = LM.score(x,y) 


predicted_values = LM.predict(predict_me) 

predictions = {'intercept': LM.intercept_, 'coefficient': LM.coef_, 'predicted_value': predicted_values, 'accuracy' : score} 

+0

xとyはデータフレームです –

+1

@VictorJohnzon 'df.values'を使用してnumpy配列にしてから、reshape関数。 –

+0

私のxとyの値はパンダのデータフレームです。nd値はdb –

0

Regr.predict()は、Xと同じ形状のセットが必要です(read the docs) 代わりに、スカラー値(9)を証明しています。このため、一致しないオブジェクトの形状に関するエラーが発生しています。

Xと同じ数の「列」を持つオブジェクト(必ずしも同じ数の行ではありません)を予測する必要があり、各行に対して予測が戻されます。

あなたpredict_value変数は、Yは、あなたがX.ここ

+0

を追加したエラーメッセージを与えるが、私は9のように複数の値を予測しようとしていてください、10,11など同時に。 –

+0

あなたのXが1列の深いnp.arrayであると仮定すると、同じ形式で予測する値を入力する必要があります。 np.array([9,10,11,12,13,14,15]) – PabTorre

+0

このエラーが発生しました –

関連する問題