【发布时间】:2017-02-24 09:02:26
【问题描述】:
这是代码行。我知道问题是我只有一个一维数组,但我无法计算将其转换为内联二维数组的代码。
def classification_model(model, data, predictors, outcome):
model.fit(data[predictors],data[outcome])
其中 data 是从 .csv 文件中读取的一维数组。
classification_model() 是这样调用的:
classification_model(LogisticRegression(), data, 'HvA', 'FTR')
其中 FTR 和 HvA 是 .csv 中的列名,因此是我的数据数组 (Pandas) 中的数组位置
跟踪是: Traceback(最近一次调用最后一次):
File "Predict.py", line 112, in <module>
classification_model(LogisticRegression(), reader, 'HvA', 'FTR')
File "Predict.py", line 15, in classification_model
model.fit(data[predictors],data[outcome])
File "/usr/local/lib/python2.7/dist-packages/sklearn/linear_model/logistic.py", line 1174, in fit
order="C")
File "/usr/local/lib/python2.7/dist-packages/sklearn/utils/validation.py", line 531, in check_X_y
check_consistent_length(X, y)
File "/usr/local/lib/python2.7/dist-packages/sklearn/utils/validation.py", line 181, in check_consistent_length
" samples: %r" % [int(l) for l in lengths])
ValueError: Found input variables with inconsistent numbers of samples: [1, 370]
.csv 文件的标题行和第一行数据
FTHG FTAG FTR HTHG HTAG HTR HS AS HST AST HF AF HC AC HY AY HR AR VCH VCD VCA Bb1X2 BbMxH BbAvH BbMxD BbAvD BbMxA BbAvA BbOU BbMx>2.5 BbAv>2.5 BbMx<2.5 BbAv<2.5 BbAH BbAHh BbMxAHH BbAvAHH BbMxAHA BbAvAHA PSCH PSCD PSCA HvA
0 0 1 0 0 1 25 10 5 2 19 11 7 2 3 3 0 1 3.4 3.5 2.25 39 3.5 3.26 3.6 3.42 2.3 2.2 37 1.95 1.86 2.02 1.92 24 0.25 2.02 1.95 1.94 1.9 3.22 3.5 2.36 0
谢谢
【问题讨论】:
-
data[col_name].values.reshape(len(data), 1)工作吗? -
太棒了!这确实有效,尽管问题并没有真正停止在那里我现在在下面的行中收到一个错误,这是由于相同的问题:
-
kf = KFold(data.shape[0], n_folds=5) error = [] for train, test in kf: # 过滤训练数据 train_predictors = (data[predictors].iloc[train, :])
-
给出:跟踪:回溯(最近一次调用最后一次):文件“Predict.py”,第 31 行,在分类模型 train_predictors = (data[predictors].iloc[train,idx]) 中返回自我。 _getitem_tuple(key) 文件“/usr/lib/python2.7/dist-packages/pandas/core/indexing.py”,第 1449 行,在 _getitem_tuple self._has_valid_tuple(tup) 文件“/usr/lib/python2.7/ dist-packages/pandas/core/indexing.py",第 126 行,在 _has_valid_tuple 中引发 IndexingError('Too many indexers') pandas.core.indexing.IndexingError: Too many indexers
-
我认为 pandas 中的 .iloc 只需要一个索引器。它应该只是 .iloc[train],而不是 .iloc[train,:]
标签: python arrays pandas scikit-learn