2017-10-25 8 views
0

私はこのエラーを取り除くにはどうすればよいSKlearnロジスティック回帰悪い入力形状誤差

from sklearn.linear_model import LogisticRegression 
from sklearn.model_selection import train_test_split 
import matplotlib.pyplot as plt 
import pandas as pd 

df = pd.read_csv("train.csv") 

clean = {"Sex": {"male":1, "female":0}} 
df.replace(clean, inplace = True) 
df["label"] = df['Survived'] 
df = df.drop(["Name","Ticket","Cabin","Embarked","Fare","Parch","Survived"], axis = 1) 
df = df.dropna(axis = 0, how="any") 

X = df.drop(["label"],axis = 1).values 
y = df["label"].values 

X_train , y_train, X_test, y_test = train_test_split(X, y, test_size = 0.7) 

log_reg = LogisticRegression() 
log_reg.fit(X_train, y_train) 
print("Accuracy on test subset: (:.3f)".format(log_reg.score(X_train, y_train))) 

ERROR 
Traceback (most recent call last): 
    File "C:\Users\user\Documents\17\kaggle'\logistic.py", line 20, in <module> 
    log_reg.fit(X_train, y_train) 
    File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\site-packages\sklearn\linear_model\logistic.py", line 1216, in fit 
    order="C") 
    File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\site-packages\sklearn\utils\validation.py", line 547, in check_X_y 
    y = column_or_1d(y, warn=True) 
    File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\site-packages\sklearn\utils\validation.py", line 583, in column_or_1d 
    raise ValueError("bad input shape {0}".format(shape)) 
ValueError: bad input shape (500, 5) 
+0

パンダのDataFrameで '.values'を使用した後、' X.shape'と 'y.shape'が何であるかを表示できますか?それは正しい形状とタイプ(それぞれ2Dと1Dのnumpy.array)を持つように見えますが、DataFrameが空の場合(dropna()に生き残った行はゼロですが、例えば、 – olooney

+0

X.shapeは(714,5)を与え、y.shapeは(714、)を与える。 – Pengoo

答えて

1

エラーは、このためです:

X_train , y_train, X_test, y_test = train_test_split(X, y, test_size = 0.7) 

これは何train_test_splitリターンではありません。

実際の使用量は次のようになります

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.7) 
train_test_split

が供給されたデータのために分割さの配列を返します。したがって、XはX_train, X_testに分割され、最初に返され、yはy_train y_testとして返されます。 これが役立つことを願っています。

+0

はい、感謝しました。 – Pengoo

関連する問題