2016-11-08 1 views
-1

プロジェクトの実行中にこのエラーが発生しました:ValueError: Found arrays with inconsistent numbers of samples: [878049 884262]san Francisの犯罪を予測するValueError

私の下のknnクラシファイアを実行しようとすると、それが表示されます。私はそれについて読んできたし、私はそれが私のXとYが同じではないことを知っている。 Xの形状は(878049,2)、yは(884262)です。

どうすればこのエラーを修正して一致させることができますか?

コード:

# drop features that we wont be using 
# train.head() 
df = train.drop(['Descript', 'Resolution', 'Address'], axis=1) 

df2 = test.drop(['Address'], axis=1) 

# trying to see the times during a day a particular crime occurs, for example 
# rapes occur more from 12am-4am during the weekend. 
# example below 
dow = { 
    'Monday':0, 
    'Tuesday':1, 
    'Wednesday':2, 
    'Thursday':3, 
    'Friday':4, 
    'Saturday':5, 
    'Sunday':6 
} 
df['DOW'] = df.DayOfWeek.map(dow) 

# Add column containing time of day 
df['Hour'] = pd.to_datetime(df.Dates).dt.hour 

# making my feature column 
feature_cols = ['DOW', 'Hour'] 
X = df[feature_cols] 

df2['DOW'] = df2.DayOfWeek.map(dow) 


y = df2['DOW'] 

# columns in X and y don't match 
print(X.shape) 
print(y.shape) 
print(y.head()) 
print(X.head()) 

# Knn classifier 
k = 5 
my_knn_for_cs4661 = KNeighborsClassifier(n_neighbors=k) 
my_knn_for_cs4661.fit(X, y) 

# KNN (with k=5), Decision Tree accuracy 
y_predict = my_knn_for_cs4661.predict(X) 
print('\n') 
score = accuracy_score(y, y_predict) 

print("K=",k,"Has ",score, "Accuracy") 
results = pd.DataFrame() 
results['actual'] = y 
results['prediction'] = y_predict 
print(results.head(10)) 

スタックトレース:

--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-11-5a002c1fd668> in <module>() 
     7 k = 5 
     8 my_knn_for_cs4661 = KNeighborsClassifier(n_neighbors=k) 
----> 9 my_knn_for_cs4661.fit(X, y) 
    10 #KNN (with k=5), Decision Tree accuracy 
    11 y_predict = my_knn_for_cs4661.predict(X) 

C:\Users\Michael\Anaconda3\lib\site-packages\sklearn\neighbors\base.py in fit(self, X, y) 
    776   """ 
    777   if not isinstance(X, (KDTree, BallTree)): 
--> 778    X, y = check_X_y(X, y, "csr", multi_output=True) 
    779 
    780   if y.ndim == 1 or y.ndim == 2 and y.shape[1] == 1: 

C:\Users\Michael\Anaconda3\lib\site-packages\sklearn\utils\validation.py in check_X_y(X, y, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, multi_output, ensure_min_samples, ensure_min_features, y_numeric, warn_on_dtype, estimator) 
    518   y = y.astype(np.float64) 
    519 
--> 520  check_consistent_length(X, y) 
    521 
    522  return X, y 

C:\Users\Michael\Anaconda3\lib\site-packages\sklearn\utils\validation.py in check_consistent_length(*arrays) 
    174  if len(uniques) > 1: 
    175   raise ValueError("Found arrays with inconsistent numbers of samples: " 
--> 176       "%s" % str(uniques)) 
    177 
    178 

ValueError: Found arrays with inconsistent numbers of samples: [878049 884262] 
+0

スタックトレースを追加できますか? –

+0

@SayaliSonawane大丈夫、私はそれを追加しました – lupejuares

+0

XとYの形状をX.shapeを使って確認してください。 Stack traceは、XとYのインスタンス数が違うと言います。 –

答えて

0

X.shapeを使用して、XとYのチェック形状。スタックトレースでは、XとYに異なるインスタンス数(サンプル数がない)があると言います。これがフィット関数がValueErrorを投げている理由です。

documentationを参照してください、それは述べて:簡単な言葉で

"""Fit the model using X as training data and y as target values 
     Parameters 
     ---------- 
     X : {array-like, sparse matrix, BallTree, KDTree} 
      Training data. If array or matrix, shape [n_samples, n_features], 
      or [n_samples, n_samples] if metric='precomputed'. 
     y : {array-like, sparse matrix} 
      Target values, array of float values, shape = [n_samples] 
      or [n_samples, n_outputs] 
     """ 

X is (878049, 2) -> n_samples = 878049 and n_features = 2 
y is (884262,) -> Here, n_samples = 884262 

をあなたは余分な目標値を渡しています。 yの目標値を減らす。 Xのn_samplesは878049なので、同じ数のターゲット値(878049)を渡す必要があります。

あなたが試すことができます。

my_knn_for_cs4661.fit(X, y[:878049]) 

は参照してください: sklearn error ValueError: Input contains NaN, infinity or a value too large for dtype('float64')

受け入れ答え状態: "私の入力CSVは空のスペースを持っていたとして、私の入力配列の寸法は、斜めにしました。"

ソースファイルを確認してください。

+0

説明に感謝します! – lupejuares

関連する問題