我正在研究一个回归问题。对于我的模型,我使用随机森林分类器进行降维。输出是一个以空格分隔的布尔值字符串,它将好的特性突出显示为“True”。它看起来是这样的:
[ True True True True True True True True True True True True
True True True False True True False True True True False True
True True True True True True True False True False False True
True False False False False False False False False False False True
False False True False False False False False False True False False
False True False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False True False False True False False
False True False True False False False False False False False False
False False False False False False False False False False False False
False True False False False False False False False False True False
False False False False False True False False False True True False
False False False False False False False False False False False False
False False False False False False True False False False False False
False False True False False True False True False True False False
True False False False False False False False False False False False
False False False True False True False True False False False False
False False False False False True True False False False False False
False False False False True False True True False True False False
False False False True True True False False False False False False
False False False False False False False False False False False False
False False False False False False True False False False False False
False False False False False False False False True False False False
False True False]
我所做的就是把它变成一个逗号分隔的列表,如下所示:
[True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, True, True, False, True, True, True, False, True, True, True, True, True, True, True, True, False, True, False, False, True, True, False, False, False, False, False, False, False, False, False, False, True, False, False, True, False, False, False, False, False, False, True, False, False, False, True, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, True, False, False, False, True, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, True, False, False, False, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, True, False, False, True, False, True, False, True, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, False, True, False, True, False, False, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, False, False, True, False, True, True, False, True, False, False, False, False, False, True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, False]
然后循环遍历每个元素并检索相应的测试列。这是此过程的完整代码:
sel = SelectFromModel(RandomForestClassifier(n_estimators = 100), threshold = '1.25*mean')
sel.fit(x_train, y_train)
selected = sel.get_support()
selected_list = list(selected)
columns_list = []
for i in range(len(selected_list)):
if(selected_list[i] == 'True'):
columns_list.append(test[i])
print(columns_list)
但是现在我得到了一个空列表,尽管我试图将它附加到我的columns_list
。基本上,我的目标是在我的预测中使用维度缩减的列。我用线性回归来解决这个问题。你知道吗
更新
当我将代码更改为下面的建议时,出现以下错误:
Traceback (most recent call last):
File "/opt/anaconda/envs/lib/python3.7/site-packages/pandas/core/indexes/base.py", line 2890, in get_loc
return self._engine.get_loc(key)
File "pandas/_libs/index.pyx", line 107, in pandas._libs.index.IndexEngine.get_loc
File "pandas/_libs/index.pyx", line 131, in pandas._libs.index.IndexEngine.get_loc
File "pandas/_libs/hashtable_class_helper.pxi", line 1607, in pandas._libs.hashtable.PyObjectHashTable.get_item
File "pandas/_libs/hashtable_class_helper.pxi", line 1614, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 0
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/onur/Documents/Boston-Kaggle/Model.py", line 100, in <module>
columns_list.append(test[i])
File "/opt/anaconda/envs/lib/python3.7/site-packages/pandas/core/frame.py", line 2975, in __getitem__
indexer = self.columns.get_loc(key)
File "/opt/anaconda/envs/lib/python3.7/site-packages/pandas/core/indexes/base.py", line 2892, in get_loc
return self._engine.get_loc(self._maybe_cast_indexer(key))
File "pandas/_libs/index.pyx", line 107, in pandas._libs.index.IndexEngine.get_loc
File "pandas/_libs/index.pyx", line 131, in pandas._libs.index.IndexEngine.get_loc
File "pandas/_libs/hashtable_class_helper.pxi", line 1607, in pandas._libs.hashtable.PyObjectHashTable.get_item
File "pandas/_libs/hashtable_class_helper.pxi", line 1614, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 0
我会这样做:
这样,您就可以从
x_train
中检索所选列的名称,将它们放入column_list
,然后在test
中搜索它们。即使train和test数据没有相同数量的列,这种方法也应该有效;显然,如果test数据没有一个选定的特性,这种方法就行不通了。你知道吗你的问题是:
将布尔值与字符串值
'True'
而不是True
进行比较一个紧凑的和脓性的解决方案是:
对于第二个错误,这是因为您正在使用
[]
访问数据帧test
。您需要使用方法.iloc
对于用法,取决于测试包含的内容:
编辑,更明确的解决方案:
相关问题 更多 >
编程相关推荐