gpt4 book ai didi

python - Scikit-learn 的特征选择回归

转载 作者:行者123 更新时间:2023-11-30 09:59:10 24 4
gpt4 key购买 nike

我有一个 Excel 数据文件,其中包括预测变量和目标/响应。我将目标称为“NEAR”,每个预测变量都有自己的名称。为了研究特征选择,我使用了这段代码,但出了问题,我无法意识到每个预测变量对我的目标的影响。我写的代码如下。所有帮助将不胜感激。

#importing libraries
from sklearn.datasets import load_boston
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
import statsmodels.api as sm
%matplotlib inline
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.feature_selection import RFE
from sklearn.linear_model import RidgeCV, LassoCV, Ridge, Lasso

# reading files
x = pd.read_excel("train.xlsx")

X = x.iloc[:, 0:5]

y = x.iloc[:,5]

#Using Pearson Correlation
plt.figure(figsize=(12,10))
cor = X.corr()
sns.heatmap(cor, annot=True, cmap=plt.cm.Reds)
plt.show()
#Correlation with output variable
cor_target = abs(cor["NEAR"])
#Selecting highly correlated features
relevant_features = cor_target[cor_target > 0.5]
relevant_features

但是我收到了这个错误

---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-28-3468dfbea7e1> in <module>
1 #Correlation with output variable
----> 2 cor_target = abs(cor[y])
3 #Selecting highly correlated features
4 relevant_features = cor_target[cor_target > 0.5]
5 relevant_features

~\Anaconda3\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
2984 if is_iterator(key):
2985 key = list(key)
-> 2986 indexer = self.loc._convert_to_indexer(key, axis=1, raise_missing=True)
2987
2988 # take() does not accept boolean indexers

~\Anaconda3\lib\site-packages\pandas\core\indexing.py in _convert_to_indexer(self, obj, axis, is_setter, raise_missing)
1283 # When setting, missing keys are not allowed, even with .loc:
1284 kwargs = {"raise_missing": True if is_setter else raise_missing}
-> 1285 return self._get_listlike_indexer(obj, axis, **kwargs)[1]
1286 else:
1287 try:

~\Anaconda3\lib\site-packages\pandas\core\indexing.py in _get_listlike_indexer(self, key, axis, raise_missing)
1090
1091 self._validate_read_indexer(
-> 1092 keyarr, indexer, o._get_axis_number(axis), raise_missing=raise_missing
1093 )
1094 return keyarr, indexer

~\Anaconda3\lib\site-packages\pandas\core\indexing.py in _validate_read_indexer(self, key, indexer, axis, raise_missing)
1175 raise KeyError(
1176 "None of [{key}] are in the [{axis}]".format(
-> 1177 key=key, axis=self.obj._get_axis_name(axis)
1178 )
1179 )

KeyError: "None of [Float64Index([-0.00398046, 0.00205926, -0.00304156, 0.00206342, 0.00797852,\n 0.00619195, 0.00368038, 0.00415858, 0.00454432, 0.00536623,\n ...\n 0.00201033, 0.00184575, 0.00165407, 0.00148248, 0.00131221,\n 0.00103276, 0.00084394, 0.00078347, 0.00069564, 0.00058571],\n dtype='float64', length=209076)] are in the [columns]"

最佳答案

问题所在(与您发布的代码不同)出现在以下行中:

cor_target = abs(cor[y])

您似乎已更改为:

cor_target = abs(cor["NEAR"])

代码的问题是您传递了一个变量y,它充当数据帧cor的数组。当您执行此操作时,pandas 会尝试选择值等于数组y 的列名称。这意味着它将搜索名为 -0.00398046、0.00205926、-0.00304156 等的列,这些列不存在,因此会出现错误。

鉴于目标变量是NEAR,您的新代码应该可以工作。

关于python - Scikit-learn 的特征选择回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59732814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com